From 4f4d05bac617a3b159e599bd8c08a8ac86b4191d Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 10 Nov 2023 12:53:15 -0600 Subject: [PATCH 01/90] add `.gitignore` --- .gitignore | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91f9376 --- /dev/null +++ b/.gitignore @@ -0,0 +1,133 @@ +# User data +.DS_Store + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution, packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +.idea/ + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete*.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy +scratchpaper.* + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ +./.env + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# datajoint +dj_local_c*.json +dj_*.y*ml +temp* +temp/* + +# docs +/docs/site +/docs/src/tutorials/*ipynb + +# emacs +**/*~ +**/#*# +**/.#* + +# Codespaces +example_data + +#nwb export +*nwb + +# vscode +*.code-workspace +.vscode From e9d4b4bc0557a4e815f98c076a20b5af3fe46e93 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 10 Nov 2023 17:14:22 -0600 Subject: [PATCH 02/90] add DevContainers --- .devcontainer/Dockerfile | 48 +++++++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 29 +++++++++++++++++++ .devcontainer/docker-compose.yaml | 22 ++++++++++++++ docker-compose-db.yaml | 15 ++++++++++ setup.py | 44 ++++++++++++++++++++++++++++ 5 files changed, 158 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yaml create mode 100644 docker-compose-db.yaml create mode 100644 setup.py diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..1bc4731 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,48 @@ +FROM python:3.9-slim@sha256:5f0192a4f58a6ce99f732fe05e3b3d00f12ae62e183886bca3ebe3d202686c7f + +ENV PATH /usr/local/bin:$PATH +ENV PYTHON_VERSION 3.9.17 + +RUN \ + adduser --system --disabled-password --shell /bin/bash vscode && \ + # install docker + apt-get update && \ + apt-get install ca-certificates curl gnupg lsb-release -y && \ + mkdir -m 0755 -p /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ + apt-get update && \ + apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y && \ + usermod -aG docker vscode && \ + apt-get clean + +RUN \ + # dev setup + apt update && \ + apt-get install sudo git bash-completion graphviz default-mysql-client s3fs procps -y && \ + usermod -aG sudo vscode && \ + echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ + pip install --no-cache-dir --upgrade black pip nbconvert && \ + echo '. /etc/bash_completion' >> /home/vscode/.bashrc && \ + echo 'export PS1="\[\e[32;1m\]\u\[\e[m\]@\[\e[34;1m\]\H\[\e[m\]:\[\e[33;1m\]\w\[\e[m\]$ "' >> /home/vscode/.bashrc && \ + apt-get clean + +COPY ./ /tmp/element-moseq/ + +RUN \ + # pipeline dependencies + apt-get install gcc g++ ffmpeg libsm6 libxext6 -y && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ + # clean up + rm -rf /tmp/element-moseq && \ + apt-get clean + +ENV DJ_HOST fakeservices.datajoint.io +ENV DJ_USER root +ENV DJ_PASS simple + +ENV IMAGING_ROOT_DATA_DIR /workspaces/element-moseq/example_data +ENV DATABASE_PREFIX neuro_ + +USER vscode +CMD bash -c "sudo rm /var/run/docker.pid; sudo dockerd" \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..11a5e14 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,29 @@ +{ + "name": "Environment + Data", + "dockerComposeFile": "docker-compose.yaml", + "service": "app", + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", + "remoteEnv": { + "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" + }, + "onCreateCommand": "mkdir -p ${DATA_MOUNTPOINT} && pip install -e .", + "hostRequirements": { + "cpus": 4, + "memory": "8gb", + "storage": "32gb" + }, + "forwardPorts": [ + 3306 + ], + "customizations": { + "settings": { + "python.pythonPath": "/usr/local/bin/python" + }, + "vscode": { + "extensions": [ + "ms-python.python@2023.8.0", + "ms-toolsai.jupyter@2023.3.1201040234" + ] + } + } +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml new file mode 100644 index 0000000..bd0a1ea --- /dev/null +++ b/.devcontainer/docker-compose.yaml @@ -0,0 +1,22 @@ +version: "3" +services: + app: + cpus: 4 + mem_limit: 8g + build: + context: .. + dockerfile: ./.devcontainer/Dockerfile + extra_hosts: + - fakeservices.datajoint.io:127.0.0.1 + devices: + - /dev/fuse + cap_add: + - SYS_ADMIN + security_opt: + - apparmor:unconfined + volumes: + - ..:/workspaces/element-moseq:cached + - docker_data:/var/lib/docker # persist docker images + privileged: true # only because of dind +volumes: + docker_data: diff --git a/docker-compose-db.yaml b/docker-compose-db.yaml new file mode 100644 index 0000000..1d453c8 --- /dev/null +++ b/docker-compose-db.yaml @@ -0,0 +1,15 @@ +# MYSQL_VER=8.0 docker compose -f docker-compose-db.yaml up --build +version: "3" +services: + db: + restart: always + image: datajoint/mysql:${MYSQL_VER} + environment: + - MYSQL_ROOT_PASSWORD=${DJ_PASS} + ports: + - "3306:3306" + healthcheck: + test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ] + timeout: 15s + retries: 10 + interval: 15s diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..72d0e3c --- /dev/null +++ b/setup.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +from os import path +from setuptools import find_packages, setup +import urllib.request + +pkg_name = "element_moseq" +here = path.abspath(path.dirname(__file__)) + +with open(path.join(here, "README.md"), "r") as f: + long_description = f.read() + +with open(path.join(here, pkg_name, "version.py")) as f: + exec(f.read()) + +setup( + name=pkg_name.replace("_", "-"), + version=__version__, # noqa: F821 + description="Keypoint Moseq DataJoint Element", + long_description=long_description, + long_description_content_type="text/markdown", + author="DataJoint", + author_email="info@datajoint.com", + license="MIT", + url=f'https://github.com/datajoint/{pkg_name.replace("_", "-")}', + keywords="neuroscience keypoint-moseq science datajoint", + packages=find_packages(exclude=["contrib", "docs", "tests*"]), + scripts=[], + install_requires=[ + "datajoint>=0.13.0", + "ipykernel>=6.0.1", + "ipywidgets", + "plotly", + ], + extras_require={ + "moseq": ["moseq @ git+https://github.com/dattalab/keypoint-moseq.git"], + "elements": [ + "element-animal>=0.1.8", + "element-event>=0.2.3", + "element-interface>=0.6.0", + "element-lab>=0.3.0", + "element-session>=0.1.5", + ], + }, +) From 3ca04675e3d572a41f341d17e2985bd7e3fdeaf8 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 10 Nov 2023 17:27:48 -0600 Subject: [PATCH 03/90] fix dockerfile and devcontainer --- .devcontainer/Dockerfile | 15 ++++++++++----- .devcontainer/devcontainer.json | 3 --- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 1bc4731..9a91441 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -31,18 +31,23 @@ COPY ./ /tmp/element-moseq/ RUN \ # pipeline dependencies - apt-get install gcc g++ ffmpeg libsm6 libxext6 -y && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ + apt-get update && \ + apt-get install -y gcc ffmpeg graphviz && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements,moseq] && \ # clean up - rm -rf /tmp/element-moseq && \ + rm -rf /tmp/element-moseq/ && \ apt-get clean ENV DJ_HOST fakeservices.datajoint.io ENV DJ_USER root ENV DJ_PASS simple -ENV IMAGING_ROOT_DATA_DIR /workspaces/element-moseq/example_data +ENV DATA_MOUNTPOINT /workspaces/element-moseq/example_data +#ENV DLC_ROOT_DATA_DIR $DATA_MOUNTPOINT/inbox +#ENV DLC_PROCESSED_DATA_DIR $DATA_MOUNTPOINT/outbox ENV DATABASE_PREFIX neuro_ USER vscode -CMD bash -c "sudo rm /var/run/docker.pid; sudo dockerd" \ No newline at end of file +CMD bash -c "sudo rm /var/run/docker.pid; sudo dockerd" + +ENV LD_LIBRARY_PATH="/lib:/opt/conda/lib" \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 11a5e14..e3f89ea 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,9 +3,6 @@ "dockerComposeFile": "docker-compose.yaml", "service": "app", "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", - "remoteEnv": { - "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" - }, "onCreateCommand": "mkdir -p ${DATA_MOUNTPOINT} && pip install -e .", "hostRequirements": { "cpus": 4, From d039df77cda3792dc8e1a8b3dbfccf316054fbba Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 1 Dec 2023 07:41:07 +0100 Subject: [PATCH 04/90] update setup.py --- setup.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 72d0e3c..e6e7b93 100644 --- a/setup.py +++ b/setup.py @@ -27,18 +27,17 @@ scripts=[], install_requires=[ "datajoint>=0.13.0", + "pydot", "ipykernel>=6.0.1", "ipywidgets", - "plotly", ], extras_require={ - "moseq": ["moseq @ git+https://github.com/dattalab/keypoint-moseq.git"], + "default": ["moseq @ git+https://github.com/dattalab/keypoint-moseq.git"], "elements": [ - "element-animal>=0.1.8", - "element-event>=0.2.3", - "element-interface>=0.6.0", "element-lab>=0.3.0", + "element-animal>=0.1.8", "element-session>=0.1.5", + "element-interface>=0.6.0", ], }, ) From 029501c8dd8a6af7be4370b10a1436cde887f378 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 1 Dec 2023 07:47:07 +0100 Subject: [PATCH 05/90] add README --- README.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/README.md b/README.md index 8b13789..867d843 100644 --- a/README.md +++ b/README.md @@ -1 +1,78 @@ +# DataJoint Element for Motion Sequencing with Keypoint-MoSeq + +DataJoint Element for motion sequencing with +[Keypoint-Moseq](https://dattalab.github.io/moseq2-website/index.html). DataJoint Elements collectively standardize +and automate data collection and analysis for neuroscience experiments. Each Element is +a modular pipeline for data storage and processing with corresponding database +tables that can be combined with other Elements to assemble a fully functional pipeline. This repository also provides a tutorial environment and notebooks to learn the pipeline. + +## Experiment Flowchart + +![flowchart]() + +## Data Pipeline Diagram + +![pipeline]() + +## Getting Started + ++ Please fork this repository. + ++ Clone the repository to your computer. + + ```bash + git clone https://github.com//element-moseq + ``` + ++ Install with `pip`: + + ```bash + pip install -e . + ``` + ++ [Interactive tutorial on GitHub Codespaces](https://github.com/datajoint/element-moseq#interactive-tutorial) + ++ [Documentation](https://datajoint.com/docs/elements/element-moseq) + +## Support + ++ If you need help getting started or run into any errors, please open a GitHub Issue +or contact our team by email at support@datajoint.com. + +## Interactive Tutorial + ++ The easiest way to learn about DataJoint Elements is to use the tutorial notebooks within the included interactive environment configured using [Dev Container](https://containers.dev/). + +### Launch Environment + +Here are some options that provide a great experience: + +- (*recommended*) Cloud-based Environment + - Launch using [GitHub Codespaces](https://github.com/features/codespaces) using the `+` option which will `Create codespace on main` in the codebase repository on your fork with default options. For more control, see the `...` where you may create `New with options...`. + - Build time for a codespace is a few minutes. This is done infrequently and cached for convenience. + - Start time for a codespace is less than 1 minute. This will pull the built codespace from cache when you need it. + - *Tip*: Each month, GitHub renews a [free-tier](https://docs.github.com/en/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts) quota of compute and storage. Typically we run into the storage limits before anything else since Codespaces consume storage while stopped. It is best to delete Codespaces when not actively in use and recreate when needed. We'll soon be creating prebuilds to avoid larger build times. Once any portion of your quota is reached, you will need to wait for it to be reset at the end of your cycle or add billing info to your GitHub account to handle overages. + - *Tip*: GitHub auto names the codespace but you can rename the codespace so that it is easier to identify later. + +- Local Environment + > *Note: Access to example data is currently limited to MacOS and Linux due to the s3fs utility. Windows users are recommended to use the above environment.* + - Install [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) + - Install [Docker](https://docs.docker.com/get-docker/) + - Install [VSCode](https://code.visualstudio.com/) + - Install the VSCode [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + - `git clone` the codebase repository and open it in VSCode + - Use the `Dev Containers extension` to `Reopen in Container` (More info is in the `Getting started` included with the extension.) + +You will know your environment has finished loading once you either see a terminal open related to `Running postStartCommand` with a final message of `Done` or the `README.md` is opened in `Preview`. + +Once the environment has launched, please run the following command in the terminal: +``` +MYSQL_VER=8.0 docker compose -f docker-compose-db.yaml up --build -d +``` + +### Instructions + +1. We recommend you start by navigating to the `notebooks` directory on the left panel and go through the `tutorial.ipynb` Jupyter notebook. Execute the cells in the notebook to begin your walkthrough of the tutorial. + +1. Once you are done, see the options available to you in the menu in the bottom-left corner. For example, in Codespace you will have an option to `Stop Current Codespace` but when running Dev Container on your own machine the equivalent option is `Reopen folder locally`. By default, GitHub will also automatically stop the Codespace after 30 minutes of inactivity. Once the Codespace is no longer being used, we recommend deleting the Codespace. From a3f149cfd87ef033ccd3e47be48c6306739ed72e Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 11 Dec 2023 15:10:32 +0100 Subject: [PATCH 06/90] minor change in setup.py --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index e6e7b93..84ecd30 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,6 @@ scripts=[], install_requires=[ "datajoint>=0.13.0", - "pydot", "ipykernel>=6.0.1", "ipywidgets", ], From 30907d54758dba10871e4284657ebadf13dd0b6a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 21:59:43 +0100 Subject: [PATCH 07/90] test container only with element-moseq[elements] --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 9a91441..f30ae5b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,7 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install -y gcc ffmpeg graphviz && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements,moseq] && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean From d01b394c96cc19460ccfd2e58f67c77c09c70b7a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 22:01:14 +0100 Subject: [PATCH 08/90] test container without DATA_MOUNTPOINT --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index f30ae5b..1b55788 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -42,7 +42,7 @@ ENV DJ_HOST fakeservices.datajoint.io ENV DJ_USER root ENV DJ_PASS simple -ENV DATA_MOUNTPOINT /workspaces/element-moseq/example_data +#ENV DATA_MOUNTPOINT /workspaces/element-moseq/example_data #ENV DLC_ROOT_DATA_DIR $DATA_MOUNTPOINT/inbox #ENV DLC_PROCESSED_DATA_DIR $DATA_MOUNTPOINT/outbox ENV DATABASE_PREFIX neuro_ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index e3f89ea..922a2fd 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ "dockerComposeFile": "docker-compose.yaml", "service": "app", "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", - "onCreateCommand": "mkdir -p ${DATA_MOUNTPOINT} && pip install -e .", + "onCreateCommand": "pip install -e .", "hostRequirements": { "cpus": 4, "memory": "8gb", From d75905855fa18c6c7551e4b83015f2dac9e27a82 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 22:14:32 +0100 Subject: [PATCH 09/90] test without version.py --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 84ecd30..c6a4f36 100644 --- a/setup.py +++ b/setup.py @@ -9,8 +9,8 @@ with open(path.join(here, "README.md"), "r") as f: long_description = f.read() -with open(path.join(here, pkg_name, "version.py")) as f: - exec(f.read()) +# with open(path.join(here, pkg_name, "version.py")) as f: +# exec(f.read()) setup( name=pkg_name.replace("_", "-"), From 36dcdc2679185c27f92375ec6c27f94748287b3a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 22:27:24 +0100 Subject: [PATCH 10/90] test with no version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c6a4f36..faee0ca 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ setup( name=pkg_name.replace("_", "-"), - version=__version__, # noqa: F821 + # version=__version__, # noqa: F821 description="Keypoint Moseq DataJoint Element", long_description=long_description, long_description_content_type="text/markdown", From 94c4dc62dd6e1e477414570ec8aeef88aa09544e Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 22:49:41 +0100 Subject: [PATCH 11/90] test default installation --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 1b55788..fbb00e4 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,7 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install -y gcc ffmpeg graphviz && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements,default] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean From ae1cbf481a31af9b94310c084786169ad09360f6 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 23:11:33 +0100 Subject: [PATCH 12/90] change default kpms installation --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index faee0ca..2b13e59 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ "ipywidgets", ], extras_require={ - "default": ["moseq @ git+https://github.com/dattalab/keypoint-moseq.git"], + "default": ["keypoint_moseq"], "elements": [ "element-lab>=0.3.0", "element-animal>=0.1.8", From 644505d84b7445189ea0aa67f17ae2c1612f3315 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 23:28:42 +0100 Subject: [PATCH 13/90] test moseq installation using https --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2b13e59..e430236 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,9 @@ "ipywidgets", ], extras_require={ - "default": ["keypoint_moseq"], + "default": [ + "keypoint-moseq @ -U git+https://github.com/dattalab/keypoint-moseq" + ], "elements": [ "element-lab>=0.3.0", "element-animal>=0.1.8", From 2689bb8c99999c2a3c66a11ccf85f6f49c56dc44 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 23:32:26 +0100 Subject: [PATCH 14/90] delete -U --- setup.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/setup.py b/setup.py index e430236..78c02ed 100644 --- a/setup.py +++ b/setup.py @@ -31,9 +31,7 @@ "ipywidgets", ], extras_require={ - "default": [ - "keypoint-moseq @ -U git+https://github.com/dattalab/keypoint-moseq" - ], + "default": ["keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq"], "elements": [ "element-lab>=0.3.0", "element-animal>=0.1.8", From 66cddfcbaf0fd9875b14a8b888edef80e7ea179e Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 23:48:16 +0100 Subject: [PATCH 15/90] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 867d843..af0cbc7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # DataJoint Element for Motion Sequencing with Keypoint-MoSeq DataJoint Element for motion sequencing with -[Keypoint-Moseq](https://dattalab.github.io/moseq2-website/index.html). DataJoint Elements collectively standardize +[Keypoint-Moseq](https://dattalab.github.io/moseq2-website/index.html). Keypoint-MoSeq processes keypoint timeseries data generated by DeepLabCut, SLEAP, or alternative pose estimation methods. DataJoint Elements collectively standardize and automate data collection and analysis for neuroscience experiments. Each Element is a modular pipeline for data storage and processing with corresponding database tables that can be combined with other Elements to assemble a fully functional pipeline. This repository also provides a tutorial environment and notebooks to learn the pipeline. From 45c9e1a7e11887f6ed58c4a8f2bd63727706fdd4 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 15 Dec 2023 23:48:58 +0100 Subject: [PATCH 16/90] from default to kpms_default and add mchips --- .devcontainer/Dockerfile | 2 +- setup.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fbb00e4..6c8df97 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,7 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install -y gcc ffmpeg graphviz && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements,default] && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements,kpms_default] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean diff --git a/setup.py b/setup.py index 78c02ed..9af6356 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,10 @@ "ipywidgets", ], extras_require={ - "default": ["keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq"], + "kpms_default": [ + "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq" + ], + "kpms_apple_mchips": ["jax==0.3.22", "jaxlib==0.3.22", "keypoint_moseq"], "elements": [ "element-lab>=0.3.0", "element-animal>=0.1.8", From 2022f3509118df36e837d9de38c3c8c7fb2adc11 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Sat, 16 Dec 2023 00:05:33 +0100 Subject: [PATCH 17/90] add jax and jaxlib to fix installation --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9af6356..a57dc2e 100644 --- a/setup.py +++ b/setup.py @@ -29,12 +29,13 @@ "datajoint>=0.13.0", "ipykernel>=6.0.1", "ipywidgets", + "jax==0.4.1", + "jaxlib==0.4.1", ], extras_require={ "kpms_default": [ "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq" ], - "kpms_apple_mchips": ["jax==0.3.22", "jaxlib==0.3.22", "keypoint_moseq"], "elements": [ "element-lab>=0.3.0", "element-animal>=0.1.8", From bb8e543e7f13c1f205db904a5d71bef73d266f41 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Sat, 16 Dec 2023 00:17:58 +0100 Subject: [PATCH 18/90] update description of MoSeq in README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index af0cbc7..8a2f2d8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # DataJoint Element for Motion Sequencing with Keypoint-MoSeq DataJoint Element for motion sequencing with -[Keypoint-Moseq](https://dattalab.github.io/moseq2-website/index.html). Keypoint-MoSeq processes keypoint timeseries data generated by DeepLabCut, SLEAP, or alternative pose estimation methods. DataJoint Elements collectively standardize +[Keypoint-Moseq](https://dattalab.github.io/moseq2-website/index.html) ([scientific article](https://doi.org/10.1101/2023.03.16.532307)). Serving as an open-source tool, Keypoint-MoSeq utilizes an advanced generative model to capture animal behavior. This machine learning software excels in automatically identifying and interpreting behavioral modules, or "syllables," from keypoint data without requiring manual intervention. The keypoint timeseries data can originate from DeepLabCut, SLEAP, or other pose estimation algorithms. + +DataJoint Elements collectively standardize and automate data collection and analysis for neuroscience experiments. Each Element is a modular pipeline for data storage and processing with corresponding database tables that can be combined with other Elements to assemble a fully functional pipeline. This repository also provides a tutorial environment and notebooks to learn the pipeline. From 03f59487683f1d8663821d5089ca8f1fdcdf8cc1 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Sat, 16 Dec 2023 00:53:47 +0100 Subject: [PATCH 19/90] update setup --- setup.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index a57dc2e..d1c59ee 100644 --- a/setup.py +++ b/setup.py @@ -25,16 +25,12 @@ keywords="neuroscience keypoint-moseq science datajoint", packages=find_packages(exclude=["contrib", "docs", "tests*"]), scripts=[], - install_requires=[ - "datajoint>=0.13.0", - "ipykernel>=6.0.1", - "ipywidgets", - "jax==0.4.1", - "jaxlib==0.4.1", - ], + install_requires=["datajoint>=0.13.0", "ipykernel>=6.0.1", "ipywidgets"], extras_require={ "kpms_default": [ - "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq" + "tensorflow==2.12.0", + "'jax[cuda]==0.4.1' -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html", + "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq", ], "elements": [ "element-lab>=0.3.0", From 97047db0036d0f00b15b0c7da644a10ccc4c689e Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Sat, 16 Dec 2023 01:01:09 +0100 Subject: [PATCH 20/90] add necessary dependency --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index d1c59ee..00248fc 100644 --- a/setup.py +++ b/setup.py @@ -28,6 +28,7 @@ install_requires=["datajoint>=0.13.0", "ipykernel>=6.0.1", "ipywidgets"], extras_require={ "kpms_default": [ + "ffmpeg", "tensorflow==2.12.0", "'jax[cuda]==0.4.1' -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html", "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq", From 9080fe3d43c1652d501869edc8aa5c2f45a7e92b Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 18 Dec 2023 22:28:20 +0100 Subject: [PATCH 21/90] WIP pipeline --- element_moseq/__init__.py | 21 ++++ element_moseq/train.py | 230 ++++++++++++++++++++++++++++++++++++++ element_moseq/version.py | 4 + 3 files changed, 255 insertions(+) create mode 100644 element_moseq/__init__.py create mode 100644 element_moseq/train.py create mode 100644 element_moseq/version.py diff --git a/element_moseq/__init__.py b/element_moseq/__init__.py new file mode 100644 index 0000000..7dbc508 --- /dev/null +++ b/element_moseq/__init__.py @@ -0,0 +1,21 @@ +import os +import datajoint as dj + +if "custom" not in dj.config: + dj.config["custom"] = {} + +# overwrite dj.config['custom'] values with environment variables if available + +dj.config["custom"]["database.prefix"] = os.getenv( + "DATABASE_PREFIX", dj.config["custom"].get("database.prefix", "") +) + +dj.config["custom"]["kpms_root_data_dir"] = os.getenv( + "KPMS_ROOT_DATA_DIR", dj.config["custom"].get("kpms_root_data_dir", "") +) + +dj.config["custom"]["kpms_processed_data_dir"] = os.getenv( + "KPMS_PROCESSED_DATA_DIR", dj.config["custom"].get("kpms_processed_data_dir", "") +) + +db_prefix = dj.config["custom"].get("database.prefix", "") diff --git a/element_moseq/train.py b/element_moseq/train.py new file mode 100644 index 0000000..53f47d8 --- /dev/null +++ b/element_moseq/train.py @@ -0,0 +1,230 @@ +import datajoint as dj +import matplotlib.pyplot as plt +import cv2 +from typing import Optional + +import inspect +import importlib +import os +from pathlib import Path +from element_interface.utils import find_full_path, dict_to_uuid + +schema = dj.schema() +_linking_module = None + + +def activate( + train_schema_name: str, + *, + create_schema: bool = True, + create_tables: bool = True, + linking_module: str = None, +): + """Activate this schema. + + Args: + train_schema_name (str): schema name on the database server + create_schema (bool): when True (default), create schema in the database if it + does not yet exist. + create_tables (bool): when True (default), create schema tables in the database + if they do not yet exist. + linking_module (str): a module (or name) containing the required dependencies. + + Dependencies: + Functions: + get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) + with all behavioral recordings, as (list of) string(s). + get_kpms_processed_data_dir(): Optional. Returns absolute path for processed + data. Defaults to session video subfolder. + """ + + if isinstance(linking_module, str): + linking_module = importlib.import_module(linking_module) + assert inspect.ismodule( + linking_module + ), "The argument 'dependency' must be a module's name or a module" + assert hasattr( + linking_module, "get_kpms_root_data_dir" + ), "The linking module must specify a lookup function for a root data directory" + + global _linking_module + _linking_module = linking_module + + # activate + schema.activate( + train_schema_name, + create_schema=create_schema, + create_tables=create_tables, + add_objects=_linking_module.__dict__, + ) + + +# -------------- Functions required by element-moseq --------------- + + +def get_kpms_root_data_dir() -> list: + """Pulls relevant func from parent namespace to specify root data dir(s). + + It is recommended that all paths in DataJoint Elements stored as relative + paths, with respect to some user-configured "root" director(y/ies). The + root(s) may vary between data modalities and user machines. Returns a full path + string or list of strings for possible root data directories. + """ + root_directories = _linking_module.get_kpms_root_data_dir() + if isinstance(root_directories, (str, Path)): + root_directories = [root_directories] + + if ( + hasattr(_linking_module, "get_kpms_processed_data_dir") + and get_kpms_processed_data_dir() not in root_directories + ): + root_directories.append(_linking_module.get_kpms_processed_data_dir()) + + return root_directories + + +def get_kpms_processed_data_dir() -> Optional[str]: + """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. + + Method in parent namespace should provide a string to a directory where KPMS output + files will be stored. If unspecified, output files will be stored in the + session directory 'videos' folder, per DeepLabCut default. + """ + if hasattr(_linking_module, "get_kpms_processed_data_dir"): + return _linking_module.get_kpms_processed_data_dir() + else: + return None + + +# ----------------------------- Table declarations ---------------------- + + +@schema +class VideoSet(dj.Manual): + definition = """ + -> Session + videoset_id: int + --- + -> Device + videoset_path: varchar(255) #file path of the video, relative to root data directory + """ + + class VideoIndex(dj.Part): + definition = """ + -> master + video_id: int + --- + video_path: varchar(255) # filepath of video, relative to root data directory + """ + + +@schema +class RecordingInfo(dj.Imported): + """Automated table with video file metadata. + + Attributes: + px_height (smallint): Height in pixels. + px_width (smallint): Width in pixels. + nframes (int): Number of frames. + fps (int): Optional. Frames per second, Hz. + recording_datetime (datetime): Optional. Datetime for the start of recording. + recording_duration (float): video duration (s) from nframes / fps.""" + + definition = """ + -> VideoSet.VideoIndex + + --- + px_height : smallint # height in pixels + px_width : smallint # width in pixels + nframes : int # number of frames + fps = NULL : int # (Hz) frames per second + recording_datetime = NULL : datetime # Datetime for the start of the recording + recording_duration : float # video duration (s) from nframes / fps + """ + + def make(self, key): + """Populates table with video metadata using CV2.""" + + file_path = (VideoSet.VideoIndex & key).fetch("video_path") + + nframes = 0 + px_height, px_width, fps = None, None, None + + file_path = (find_full_path(get_kpms_root_data_dir(), file_path)).as_posix() + + cap = cv2.VideoCapture(file_path) + info = ( + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), + int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FPS)), + ) + if px_height is not None: + assert (px_height, px_width, fps) == info + px_height, px_width, fps = info + nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + cap.release() + + self.insert1( + { + **key, + "px_height": px_height, + "px_width": px_width, + "nframes": nframes, + "fps": fps, + "recording_duration": nframes / fps, + } + ) + + +@schema +class KeypointsSet(dj.Manual): + """Input data containing keypoints and the parameter set used during pose estimation inference (E.g. DeepLabCut).""" + + definition = """ + -> VideoSet + kpset_id : int + --- + kpset_path : varchar(255) # keypoints path of the pose estimation method, relative to root + config_path : varchar(255) # config file path of the pose estimation method, relative to root + kp_description='' : varchar(300) # Optional. User-entered description. + """ + + class BodypartsParamSet(dj.Part): + """Body parts to use in the model + + Attributes: + anterior_bodyparts(longblob): list of strings of anterior bodyparts + posterior_bodyparts(longblob): list of strings of posterior bodyparts + use_bodyparts(longblob): list of strings of bodyparts to be used + """ + + definition = """ + -> master + bodypartset_id : int + --- + anterior_bodyparts : varchar(100) # list of strings of anterior bodyparts + posterior_bodyparts : varchar(100) # list of strings of posterior bodyparts + use_bodyparts : longblob # list of strings of bodyparts to be used + """ + + +@schema +class PoseEstimationMethod(dj.Lookup): + definition = """ # Parameters used to obtain the keypoints data based on a specific pose estimation method + -> KeypointsSet + method_id : int + --- + format='deeplabcut' : enum('deeplabcut', 'sleap') # pose estimation method + extension='h5' : enum('h5', 'csv') + """ + + +@schema +class KpmsProject(dj.Manual): + definition = """ + -> Session + kpms_project_id : int + --- + kpms_project_path : varchar(255) # kpms project path + project_description : varchar(300) # User-friendly description of the kpms project + """ diff --git a/element_moseq/version.py b/element_moseq/version.py new file mode 100644 index 0000000..652faa3 --- /dev/null +++ b/element_moseq/version.py @@ -0,0 +1,4 @@ +""" +Package metadata +""" +__version__ = "0.1.0" From e68c61e5008b254391802454e1bbe27ea97d26c9 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 18 Dec 2023 22:28:42 +0100 Subject: [PATCH 22/90] WIP notebooks --- notebooks/testing.ipynb | 1499 ++++++++++++++++++++++++++++++++ notebooks/tutorial_pipeline.py | 95 ++ 2 files changed, 1594 insertions(+) create mode 100644 notebooks/testing.ipynb create mode 100644 notebooks/tutorial_pipeline.py diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb new file mode 100644 index 0000000..392f265 --- /dev/null +++ b/notebooks/testing.ipynb @@ -0,0 +1,1499 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "if os.path.basename(os.getcwd()) == \"notebooks\":\n", + " os.chdir(\"..\")\n", + "assert os.path.basename(os.getcwd()) == \"element-moseq\", (\n", + " \"Please move to the \" + \"element directory\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import datajoint as dj\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "dj.config.load(\"dj_local_conf.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2023-12-18 22:09:52,236][INFO]: Connecting milagros@db.datajoint.com:3306\n", + "[2023-12-18 22:09:53,727][INFO]: Connected milagros@db.datajoint.com:3306\n" + ] + }, + { + "data": { + "text/plain": [ + "DataJoint connection (connected) milagros@db.datajoint.com:3306" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dj.conn()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2023-12-18 22:10:01,266][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + ] + } + ], + "source": [ + "from tutorial_pipeline import lab, subject, session, train, Device" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# train.BodypartsParamSet.drop()\n", + "# train.PoseEstimationMethod.drop()\n", + "# train.KeypointsSet.drop_quick()\n", + "# train.RecordingInfo.drop_quick()\n", + "# train.VideoSet.VideoIndex.delete(force=True)\n", + "# train.VideoSet.drop()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "#dj.Diagram(subject) + dj.Diagram(session) + dj.Diagram(train)\n", + "#dj.Diagram(session) + dj.Diagram(train)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "train.KeypointsSet\n", + "\n", + "\n", + "train.KeypointsSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.KeypointsSet.BodypartsParamSet\n", + "\n", + "\n", + "train.KeypointsSet.BodypartsParamSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.KeypointsSet->train.KeypointsSet.BodypartsParamSet\n", + "\n", + "\n", + "\n", + "\n", + "train.PoseEstimationMethod\n", + "\n", + "\n", + "train.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.KeypointsSet->train.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "train.RecordingInfo\n", + "\n", + "\n", + "train.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.VideoSet.VideoIndex\n", + "\n", + "\n", + "train.VideoSet.VideoIndex\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.VideoSet.VideoIndex->train.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "train.KpmsProject\n", + "\n", + "\n", + "train.KpmsProject\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.VideoSet\n", + "\n", + "\n", + "train.VideoSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "train.VideoSet->train.KeypointsSet\n", + "\n", + "\n", + "\n", + "\n", + "train.VideoSet->train.VideoSet.VideoIndex\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dj.Diagram(train)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

device

\n", + " \n", + "
\n", + "

videoset_path

\n", + " file path of the video, relative to root data directory\n", + "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id device videoset_path \n", + "+----------+ +------------+ +------------+ +---------+ +------------+\n", + "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", + " (Total: 1)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.VideoSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Subject and Session tables\n", + "subject.Subject.insert1(\n", + " dict(\n", + " subject=\"subject1\",\n", + " sex=\"F\",\n", + " subject_birth_date=\"2020-01-01\",\n", + " subject_description=\"test\",\n", + " ),\n", + " skip_duplicates=True,\n", + ")\n", + "\n", + "#Definition of the dictionary named \"session_keys\"\n", + "session_keys = [\n", + " dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\"),\n", + " dict(subject=\"subject1\", session_datetime=\"2021-06-03 14:43:10\"),\n", + "]\n", + "\n", + "#Insert this dictionary in the Session table\n", + "session.Session.insert(session_keys, skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

device

\n", + " \n", + "
\n", + "

modality

\n", + " \n", + "
\n", + "

description

\n", + " \n", + "
Camera1Pose EstimationPanasonic HC-V380K
Camera2Pose EstimationPanasonic HC-V770K
\n", + " \n", + "

Total: 2

\n", + " " + ], + "text/plain": [ + "*device modality description \n", + "+---------+ +------------+ +------------+\n", + "Camera1 Pose Estimatio Panasonic HC-V\n", + "Camera2 Pose Estimatio Panasonic HC-V\n", + " (Total: 2)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Device()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "recording_key = dict(subject=\"subject1\",\n", + " session_datetime=\"2021-06-02 14:04:22\",\n", + " videoset_id=1)\n", + "train.VideoSet.insert1({**recording_key, \n", + " \"videoset_path\":\"./input_data/videos\",\n", + " \"device\":\"Camera1\"},\n", + " skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

device

\n", + " \n", + "
\n", + "

videoset_path

\n", + " file path of the video, relative to root data directory\n", + "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id device videoset_path \n", + "+----------+ +------------+ +------------+ +---------+ +------------+\n", + "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", + " (Total: 1)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.VideoSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "video_files = [\"./input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", + " \"./input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", + " \"./input_data/videos/21_12_2_def6b_2.top.ir.mp4\"]\n", + "\n", + "train.VideoSet.VideoIndex.insert(\n", + " ({**recording_key, \"video_id\":v_idx, \"video_path\":Path(f)}\n", + " for v_idx, f in enumerate(video_files)),skip_duplicates=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

device

\n", + " \n", + "
\n", + "

videoset_path

\n", + " file path of the video, relative to root data directory\n", + "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id device videoset_path \n", + "+----------+ +------------+ +------------+ +---------+ +------------+\n", + "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", + " (Total: 1)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.VideoSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

video_id

\n", + " \n", + "
\n", + "

px_height

\n", + " height in pixels\n", + "
\n", + "

px_width

\n", + " width in pixels\n", + "
\n", + "

nframes

\n", + " number of frames\n", + "
\n", + "

fps

\n", + " (Hz) frames per second\n", + "
\n", + "

recording_datetime

\n", + " Datetime for the start of the recording\n", + "
\n", + "

recording_duration

\n", + " video duration (s) from nframes / fps\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *video_id px_height px_width nframes fps recording_date recording_dura\n", + "+---------+ +------------+ +------------+ +----------+ +-----------+ +----------+ +---------+ +-----+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.RecordingInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# train.RecordingInfo.populate()\n", + "# train.RecordingInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'subject': 'subject1',\n", + " 'session_datetime': '2021-06-02 14:04:22',\n", + " 'videoset_id': 1}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "recording_key" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

kpset_path

\n", + " keypoints path of the pose estimation method, relative to root\n", + "
\n", + "

config_path

\n", + " config file path of the pose estimation method, relative to root\n", + "
\n", + "

kp_description

\n", + " Optional. User-entered description.\n", + "
subject12021-06-02 14:04:2211./input_data/videos/./data/inbox/input_data/config.yamlfirst test
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *kpset_id kpset_path config_path kp_description\n", + "+----------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 ./input_data/v ./data/inbox/i first test \n", + " (Total: 1)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.KeypointsSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Insert data in KeypointsSet table\n", + "kpset_key = {**recording_key,\"kpset_id\":1}\n", + "train.KeypointsSet.insert1({**kpset_key,\n", + " \"kpset_path\":\"./input_data/videos/\",\n", + " \"config_path\":\"./data/inbox/input_data/config.yaml\",\n", + " \"kp_description\":\"first test\"},\n", + " skip_duplicates=True)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

kpset_path

\n", + " keypoints path of the pose estimation method, relative to root\n", + "
\n", + "

config_path

\n", + " config file path of the pose estimation method, relative to root\n", + "
\n", + "

kp_description

\n", + " Optional. User-entered description.\n", + "
subject12021-06-02 14:04:2211./input_data/videos/./data/inbox/input_data/config.yamlfirst test
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *kpset_id kpset_path config_path kp_description\n", + "+----------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 ./input_data/v ./data/inbox/i first test \n", + " (Total: 1)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.KeypointsSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

method_id

\n", + " \n", + "
\n", + "

format

\n", + " pose estimation method\n", + "
\n", + "

extension

\n", + " \n", + "
subject12021-06-02 14:04:22111deeplabcuth5
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *kpset_id *method_id format extension \n", + "+----------+ +------------+ +------------+ +----------+ +-----------+ +------------+ +-----------+\n", + "subject1 2021-06-02 14: 1 1 1 deeplabcut h5 \n", + " (Total: 1)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.PoseEstimationMethod()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Insert data in PoseEstimationMethod table\n", + "train.PoseEstimationMethod.insert1({**kpset_key,\n", + " \"method_id\":1, \n", + " \"format\":\"deeplabcut\",\n", + " \"extension\":\"h5\"}, \n", + " skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

method_id

\n", + " \n", + "
\n", + "

format

\n", + " pose estimation method\n", + "
\n", + "

extension

\n", + " \n", + "
subject12021-06-02 14:04:22111deeplabcuth5
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *kpset_id *method_id format extension \n", + "+----------+ +------------+ +------------+ +----------+ +-----------+ +------------+ +-----------+\n", + "subject1 2021-06-02 14: 1 1 1 deeplabcut h5 \n", + " (Total: 1)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.PoseEstimationMethod()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

videoset_id

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodypartset_id

\n", + " \n", + "
\n", + "

anterior_bodyparts

\n", + " list of strings of anterior bodyparts\n", + "
\n", + "

posterior_bodyparts

\n", + " list of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " list of strings of bodyparts to be used\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *videoset_id *kpset_id *bodypartset_i anterior_bodyp posterior_body use_bodyparts \n", + "+---------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train.KeypointsSet.BodypartsParamSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "ename": "OperationalError", + "evalue": "(1241, 'Operand should contain 1 column(s)')", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOperationalError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[25], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m# Insert data in BodypartsParamset table\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m train\u001b[39m.\u001b[39;49mKeypointsSet\u001b[39m.\u001b[39;49mBodypartsParamSet\u001b[39m.\u001b[39;49minsert1({\n\u001b[1;32m 3\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkpset_key,\n\u001b[1;32m 4\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mbodypartset_id\u001b[39;49m\u001b[39m\"\u001b[39;49m:\u001b[39m1\u001b[39;49m,\n\u001b[1;32m 5\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39manterior_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m\"\u001b[39;49m\u001b[39mnose\u001b[39;49m\u001b[39m\"\u001b[39;49m],\n\u001b[1;32m 6\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mposterior_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m\"\u001b[39;49m\u001b[39mspine4\u001b[39;49m\u001b[39m\"\u001b[39;49m],\n\u001b[1;32m 7\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39muse_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m'\u001b[39;49m\u001b[39mspine4\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine3\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine2\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine1\u001b[39;49m\u001b[39m'\u001b[39;49m,\n\u001b[1;32m 8\u001b[0m \u001b[39m'\u001b[39;49m\u001b[39mhead\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mnose\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mright ear\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mleft ear\u001b[39;49m\u001b[39m'\u001b[39;49m]\n\u001b[1;32m 9\u001b[0m })\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/table.py:337\u001b[0m, in \u001b[0;36mTable.insert1\u001b[0;34m(self, row, **kwargs)\u001b[0m\n\u001b[1;32m 330\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39minsert1\u001b[39m(\u001b[39mself\u001b[39m, row, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 331\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 332\u001b[0m \u001b[39m Insert one data record into the table. For ``kwargs``, see ``insert()``.\u001b[39;00m\n\u001b[1;32m 333\u001b[0m \n\u001b[1;32m 334\u001b[0m \u001b[39m :param row: a numpy record, a dict-like object, or an ordered sequence to be inserted\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[39m as one row.\u001b[39;00m\n\u001b[1;32m 336\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49minsert((row,), \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/table.py:440\u001b[0m, in \u001b[0;36mTable.insert\u001b[0;34m(self, rows, replace, skip_duplicates, ignore_extra_fields, allow_direct_insert)\u001b[0m\n\u001b[1;32m 424\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 425\u001b[0m query \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m{command}\u001b[39;00m\u001b[39m INTO \u001b[39m\u001b[39m{destination}\u001b[39;00m\u001b[39m(`\u001b[39m\u001b[39m{fields}\u001b[39;00m\u001b[39m`) VALUES \u001b[39m\u001b[39m{placeholders}\u001b[39;00m\u001b[39m{duplicate}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(\n\u001b[1;32m 426\u001b[0m command\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mREPLACE\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mif\u001b[39;00m replace \u001b[39melse\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mINSERT\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 427\u001b[0m destination\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfrom_clause(),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 438\u001b[0m ),\n\u001b[1;32m 439\u001b[0m )\n\u001b[0;32m--> 440\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mconnection\u001b[39m.\u001b[39;49mquery(\n\u001b[1;32m 441\u001b[0m query,\n\u001b[1;32m 442\u001b[0m args\u001b[39m=\u001b[39;49m\u001b[39mlist\u001b[39;49m(\n\u001b[1;32m 443\u001b[0m itertools\u001b[39m.\u001b[39;49mchain\u001b[39m.\u001b[39;49mfrom_iterable(\n\u001b[1;32m 444\u001b[0m (v \u001b[39mfor\u001b[39;49;00m v \u001b[39min\u001b[39;49;00m r[\u001b[39m\"\u001b[39;49m\u001b[39mvalues\u001b[39;49m\u001b[39m\"\u001b[39;49m] \u001b[39mif\u001b[39;49;00m v \u001b[39mis\u001b[39;49;00m \u001b[39mnot\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m) \u001b[39mfor\u001b[39;49;00m r \u001b[39min\u001b[39;49;00m rows\n\u001b[1;32m 445\u001b[0m )\n\u001b[1;32m 446\u001b[0m ),\n\u001b[1;32m 447\u001b[0m )\n\u001b[1;32m 448\u001b[0m \u001b[39mexcept\u001b[39;00m UnknownAttributeError \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 449\u001b[0m \u001b[39mraise\u001b[39;00m err\u001b[39m.\u001b[39msuggest(\n\u001b[1;32m 450\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mTo ignore extra fields in insert, set ignore_extra_fields=True\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m )\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:340\u001b[0m, in \u001b[0;36mConnection.query\u001b[0;34m(self, query, args, as_dict, suppress_warnings, reconnect)\u001b[0m\n\u001b[1;32m 338\u001b[0m cursor \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_conn\u001b[39m.\u001b[39mcursor(cursor\u001b[39m=\u001b[39mcursor_class)\n\u001b[1;32m 339\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 340\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_execute_query(cursor, query, args, suppress_warnings)\n\u001b[1;32m 341\u001b[0m \u001b[39mexcept\u001b[39;00m errors\u001b[39m.\u001b[39mLostConnectionError:\n\u001b[1;32m 342\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m reconnect:\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:296\u001b[0m, in \u001b[0;36mConnection._execute_query\u001b[0;34m(cursor, query, args, suppress_warnings)\u001b[0m\n\u001b[1;32m 294\u001b[0m cursor\u001b[39m.\u001b[39mexecute(query, args)\n\u001b[1;32m 295\u001b[0m \u001b[39mexcept\u001b[39;00m client\u001b[39m.\u001b[39merr\u001b[39m.\u001b[39mError \u001b[39mas\u001b[39;00m err:\n\u001b[0;32m--> 296\u001b[0m \u001b[39mraise\u001b[39;00m translate_query_error(err, query)\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:294\u001b[0m, in \u001b[0;36mConnection._execute_query\u001b[0;34m(cursor, query, args, suppress_warnings)\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[39mif\u001b[39;00m suppress_warnings:\n\u001b[1;32m 292\u001b[0m \u001b[39m# suppress all warnings arising from underlying SQL library\u001b[39;00m\n\u001b[1;32m 293\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 294\u001b[0m cursor\u001b[39m.\u001b[39;49mexecute(query, args)\n\u001b[1;32m 295\u001b[0m \u001b[39mexcept\u001b[39;00m client\u001b[39m.\u001b[39merr\u001b[39m.\u001b[39mError \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 296\u001b[0m \u001b[39mraise\u001b[39;00m translate_query_error(err, query)\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/cursors.py:153\u001b[0m, in \u001b[0;36mCursor.execute\u001b[0;34m(self, query, args)\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[39mpass\u001b[39;00m\n\u001b[1;32m 151\u001b[0m query \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmogrify(query, args)\n\u001b[0;32m--> 153\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_query(query)\n\u001b[1;32m 154\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_executed \u001b[39m=\u001b[39m query\n\u001b[1;32m 155\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/cursors.py:322\u001b[0m, in \u001b[0;36mCursor._query\u001b[0;34m(self, q)\u001b[0m\n\u001b[1;32m 320\u001b[0m conn \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_get_db()\n\u001b[1;32m 321\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_clear_result()\n\u001b[0;32m--> 322\u001b[0m conn\u001b[39m.\u001b[39;49mquery(q)\n\u001b[1;32m 323\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_do_get_result()\n\u001b[1;32m 324\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrowcount\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:558\u001b[0m, in \u001b[0;36mConnection.query\u001b[0;34m(self, sql, unbuffered)\u001b[0m\n\u001b[1;32m 556\u001b[0m sql \u001b[39m=\u001b[39m sql\u001b[39m.\u001b[39mencode(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mencoding, \u001b[39m\"\u001b[39m\u001b[39msurrogateescape\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 557\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_execute_command(COMMAND\u001b[39m.\u001b[39mCOM_QUERY, sql)\n\u001b[0;32m--> 558\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_affected_rows \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_read_query_result(unbuffered\u001b[39m=\u001b[39;49munbuffered)\n\u001b[1;32m 559\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_affected_rows\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:822\u001b[0m, in \u001b[0;36mConnection._read_query_result\u001b[0;34m(self, unbuffered)\u001b[0m\n\u001b[1;32m 820\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 821\u001b[0m result \u001b[39m=\u001b[39m MySQLResult(\u001b[39mself\u001b[39m)\n\u001b[0;32m--> 822\u001b[0m result\u001b[39m.\u001b[39;49mread()\n\u001b[1;32m 823\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result \u001b[39m=\u001b[39m result\n\u001b[1;32m 824\u001b[0m \u001b[39mif\u001b[39;00m result\u001b[39m.\u001b[39mserver_status \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:1200\u001b[0m, in \u001b[0;36mMySQLResult.read\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1198\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mread\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m 1199\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m-> 1200\u001b[0m first_packet \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mconnection\u001b[39m.\u001b[39;49m_read_packet()\n\u001b[1;32m 1202\u001b[0m \u001b[39mif\u001b[39;00m first_packet\u001b[39m.\u001b[39mis_ok_packet():\n\u001b[1;32m 1203\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_read_ok_packet(first_packet)\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:772\u001b[0m, in \u001b[0;36mConnection._read_packet\u001b[0;34m(self, packet_type)\u001b[0m\n\u001b[1;32m 770\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result\u001b[39m.\u001b[39munbuffered_active \u001b[39mis\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[1;32m 771\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result\u001b[39m.\u001b[39munbuffered_active \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m\n\u001b[0;32m--> 772\u001b[0m packet\u001b[39m.\u001b[39;49mraise_for_error()\n\u001b[1;32m 773\u001b[0m \u001b[39mreturn\u001b[39;00m packet\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/protocol.py:221\u001b[0m, in \u001b[0;36mMysqlPacket.raise_for_error\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[39mif\u001b[39;00m DEBUG:\n\u001b[1;32m 220\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39merrno =\u001b[39m\u001b[39m\"\u001b[39m, errno)\n\u001b[0;32m--> 221\u001b[0m err\u001b[39m.\u001b[39;49mraise_mysql_exception(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_data)\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/err.py:143\u001b[0m, in \u001b[0;36mraise_mysql_exception\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[39mif\u001b[39;00m errorclass \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 142\u001b[0m errorclass \u001b[39m=\u001b[39m InternalError \u001b[39mif\u001b[39;00m errno \u001b[39m<\u001b[39m \u001b[39m1000\u001b[39m \u001b[39melse\u001b[39;00m OperationalError\n\u001b[0;32m--> 143\u001b[0m \u001b[39mraise\u001b[39;00m errorclass(errno, errval)\n", + "\u001b[0;31mOperationalError\u001b[0m: (1241, 'Operand should contain 1 column(s)')" + ] + } + ], + "source": [ + "# Insert data in BodypartsParamset table\n", + "train.KeypointsSet.BodypartsParamSet.insert1({\n", + " **kpset_key,\n", + " \"bodypartset_id\":1,\n", + " \"anterior_bodyparts\":[\"nose\"],\n", + " \"posterior_bodyparts\":[\"spine4\"],\n", + " \"use_bodyparts\":['spine4', 'spine3', 'spine2', 'spine1',\n", + " 'head', 'nose', 'right ear', 'left ear']\n", + " })" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "kpms_test", + "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.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/tutorial_pipeline.py b/notebooks/tutorial_pipeline.py new file mode 100644 index 0000000..9e5da95 --- /dev/null +++ b/notebooks/tutorial_pipeline.py @@ -0,0 +1,95 @@ +import datajoint as dj +from collections import abc +from element_lab import lab +from element_animal import subject +from element_session import session_with_datetime as session + +from element_moseq import train + +from element_animal.subject import Subject +from element_lab.lab import Source, Lab, Protocol, User, Project + + +__all__ = [ + "Subject", + "Source", + "Lab", + "Protocol", + "User", + "Project", + "Session", +] + +if "custom" not in dj.config: + dj.config["custom"] = {} + +db_prefix = dj.config["custom"].get("database.prefix", "") + + +# Declare functions for retrieving data +def get_kpms_root_data_dir() -> list: + """Returns a list of root directories for Element Keypoint-MoSeq""" + kpms_root_dirs = dj.config.get("custom", {}).get("kpms_root_data_dir") + if not kpms_root_dirs: + return None + elif not isinstance(kpms_root_dirs, abc.Sequence): + return list(kpms_root_dirs) + else: + return kpms_root_dirs + + +def get_kpms_processed_data_dir() -> str: + """Returns an output directory relative to custom 'kpms_output_dir' root""" + from pathlib import Path + + kpms_output_dir = dj.config.get("custom", {}).get("kpms_processed_data_dir") + if kpms_output_dir: + return Path(kpms_output_dir) + else: + return None + + +# Activate "lab", "subject", "session" schema ------------- + +lab.activate(db_prefix + "lab") + +subject.activate(db_prefix + "subject", linking_module=__name__) + +Experimenter = lab.User +Session = session.Session +session.activate(db_prefix + "session", linking_module=__name__) + +# Activate equipment table ------------------------------------ + + +@lab.schema +class Device(dj.Lookup): + """Table for managing lab equipment. + + In Element DeepLabCut, this table is referenced by `model.VideoRecording`. + The primary key is also used to generate inferred output directories when + running pose estimation inference. Refer to the `definition` attribute + for the table design. + + Attributes: + device ( varchar(32) ): Device short name. + modality ( varchar(64) ): Modality for which this device is used. + description ( varchar(256) ): Optional. Description of device. + """ + + definition = """ + device : varchar(32) + --- + modality : varchar(64) + description=null : varchar(256) + """ + contents = [ + ["Camera1", "Pose Estimation", "Panasonic HC-V380K"], + ["Camera2", "Pose Estimation", "Panasonic HC-V770K"], + ] + + +# Activate Keypoint-MoSeq schema ----------------------------------- + +train.activate(db_prefix + "train", linking_module=__name__) +# model.activate(db_prefix + "model", linking_module=__name__) From 9bea9d0cddbb3cd2ba9a3dbed81842714845dbb3 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 2 Jan 2024 07:33:36 +0100 Subject: [PATCH 23/90] WIP: test schema `pca` and basic structure `model` --- element_moseq/model.py | 139 ++++ element_moseq/pca.py | 375 +++++++++ element_moseq/train.py | 230 ------ notebooks/testing.ipynb | 1370 ++------------------------------ notebooks/tutorial_pipeline.py | 6 +- 5 files changed, 599 insertions(+), 1521 deletions(-) create mode 100644 element_moseq/model.py create mode 100644 element_moseq/pca.py delete mode 100644 element_moseq/train.py diff --git a/element_moseq/model.py b/element_moseq/model.py new file mode 100644 index 0000000..1589a7b --- /dev/null +++ b/element_moseq/model.py @@ -0,0 +1,139 @@ +import datajoint as dj +import matplotlib.pyplot as plt +import cv2 +from typing import Optional + +import inspect +import importlib +import os +from pathlib import Path +from element_interface.utils import find_full_path, dict_to_uuid + +schema = dj.schema() +_linking_module = None + + +def activate( + model_schema_name: str, + *, + create_schema: bool = True, + create_tables: bool = True, + linking_module: str = None, +): + """Activate this schema. + + Args: + model_schema_name (str): schema name on the database server + create_schema (bool): when True (default), create schema in the database if it + does not yet exist. + create_tables (bool): when True (default), create schema tables in the database + if they do not yet exist. + linking_module (str): a module (or name) containing the required dependencies. + + Dependencies: + Functions: + get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) + with all behavioral recordings, as (list of) string(s). + get_kpms_processed_data_dir(): Optional. Returns absolute path for processed + data. Defaults to session video subfolder. + """ + + if isinstance(linking_module, str): + linking_module = importlib.import_module(linking_module) + assert inspect.ismodule( + linking_module + ), "The argument 'dependency' must be a module's name or a module" + assert hasattr( + linking_module, "get_kpms_root_data_dir" + ), "The linking module must specify a lookup function for a root data directory" + + global _linking_module + _linking_module = linking_module + + # activate + schema.activate( + model_schema_name, + create_schema=create_schema, + create_tables=create_tables, + add_objects=_linking_module.__dict__, + ) + + +# -------------- Functions required by element-moseq --------------- + + +def get_kpms_root_data_dir() -> list: + """Pulls relevant func from parent namespace to specify root data dir(s). + + It is recommended that all paths in DataJoint Elements stored as relative + paths, with respect to some user-configured "root" director(y/ies). The + root(s) may vary between data modalities and user machines. Returns a full path + string or list of strings for possible root data directories. + """ + root_directories = _linking_module.get_kpms_root_data_dir() + if isinstance(root_directories, (str, Path)): + root_directories = [root_directories] + + if ( + hasattr(_linking_module, "get_kpms_processed_data_dir") + and get_kpms_processed_data_dir() not in root_directories + ): + root_directories.append(_linking_module.get_kpms_processed_data_dir()) + + return root_directories + + +def get_kpms_processed_data_dir() -> Optional[str]: + """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. + + Method in parent namespace should provide a string to a directory where KPMS output + files will be stored. If unspecified, output files will be stored in the + session directory 'videos' folder, per DeepLabCut default. + """ + if hasattr(_linking_module, "get_kpms_processed_data_dir"): + return _linking_module.get_kpms_processed_data_dir() + else: + return None + + +# ----------------------------- Table declarations ---------------------- + + +@schema +class Kappa(dj.Lookup): + definition = """ + kappa_id : int + --- + kappa_min_value : int + kappa_max_value : int + kappa_description='' : varchar(1000) + """ + + +@schema +class InitializingTask(dj.Manual): + definition = """ + -> Session + + """ + + +@schema +class Initializing(dj.Computed): + definition = """ + -> InitializingTask +""" + + +@schema +class Prefitting(dj.Computed): + definition = """ + -> Initializing + """ + + +@schema +class FullFitting(dj.Computed): + definition = """ + -> Prefitting + """ diff --git a/element_moseq/pca.py b/element_moseq/pca.py new file mode 100644 index 0000000..6e2ffb5 --- /dev/null +++ b/element_moseq/pca.py @@ -0,0 +1,375 @@ +import datajoint as dj +import matplotlib.pyplot as plt +import cv2 +from typing import Optional +import numpy as np +from datetime import datetime + +import inspect +import importlib +import os +from pathlib import Path +from element_interface.utils import find_full_path, dict_to_uuid + +schema = dj.schema() +_linking_module = None + + +def activate( + pca_schema_name: str, + *, + create_schema: bool = True, + create_tables: bool = True, + linking_module: str = None, +): + """Activate this schema. + + Args: + pca_schema_name (str): schema name on the database server + create_schema (bool): when True (default), create schema in the database if it + does not yet exist. + create_tables (bool): when True (default), create schema tables in the database + if they do not yet exist. + linking_module (str): a module (or name) containing the required dependencies. + + Dependencies: + Functions: + get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) + with all behavioral recordings, as (list of) string(s). + get_kpms_processed_data_dir(): Optional. Returns absolute path for processed + data. Defaults to session video subfolder. + """ + + if isinstance(linking_module, str): + linking_module = importlib.import_module(linking_module) + assert inspect.ismodule( + linking_module + ), "The argument 'dependency' must be a module's name or a module" + assert hasattr( + linking_module, "get_kpms_root_data_dir" + ), "The linking module must specify a lookup function for a root data directory" + + global _linking_module + _linking_module = linking_module + + # activate + schema.activate( + pca_schema_name, + create_schema=create_schema, + create_tables=create_tables, + add_objects=_linking_module.__dict__, + ) + + +# -------------- Functions required by element-moseq --------------- + + +def get_kpms_root_data_dir() -> list: + """Pulls relevant func from parent namespace to specify root data dir(s). + + It is recommended that all paths in DataJoint Elements stored as relative + paths, with respect to some user-configured "root" director(y/ies). The + root(s) may vary between data modalities and user machines. Returns a full path + string or list of strings for possible root data directories. + """ + root_directories = _linking_module.get_kpms_root_data_dir() + if isinstance(root_directories, (str, Path)): + root_directories = [root_directories] + + if ( + hasattr(_linking_module, "get_kpms_processed_data_dir") + and get_kpms_processed_data_dir() not in root_directories + ): + root_directories.append(_linking_module.get_kpms_processed_data_dir()) + + return root_directories + + +def get_kpms_processed_data_dir() -> Optional[str]: + """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. + + Method in parent namespace should provide a string to a directory where KPMS output + files will be stored. If unspecified, output files will be stored in the + session directory 'videos' folder, per DeepLabCut default. + """ + if hasattr(_linking_module, "get_kpms_processed_data_dir"): + return _linking_module.get_kpms_processed_data_dir() + else: + return None + + +# ----------------------------- Table declarations ---------------------- + + +@schema +class KeypointSet(dj.Manual): + definition = """ + -> Session + kpset_id : int + --- + kpset_path : varchar(255) #Path relative to root data directory where the videos and their keypoints are located. + kpset_description='' : varchar(300) # Optional. User-entered description. + + """ + + class VideoFiles(dj.Part): + """IDs and file paths of each video file.""" + + definition = """ + -> master + video_id : int + --- + video_path : varchar(255) # Filepath of each video, relative to root data directory + """ + + class PoseEstimationMethod(dj.Part): + definition = """ + # Parameters used to obtain the keypoints data based on a specific pose estimation method + -> master + --- + format : varchar(20) # deeplabcut, sleap + extension : varchar(20) # h5, csv + -> Device + """ + + +@schema +class RecordingInfo(dj.Imported): + """Automated table with video file metadata. + + Attributes: + px_height (smallint): Height in pixels. + px_width (smallint): Width in pixels. + nframes (int): Number of frames. + fps (int): Optional. Frames per second, Hz. + recording_datetime (datetime): Optional. Datetime for the start of recording. + recording_duration (float): video duration (s) from nframes / fps.""" + + definition = """ + -> KeypointSet.VideoFiles + --- + px_height : smallint # height in pixels + px_width : smallint # width in pixels + nframes : int # number of frames + fps = NULL : int # (Hz) frames per second + recording_datetime = NULL : datetime # Datetime for the start of the recording + recording_duration : float # video duration (s) from nframes / fps + """ + + @property + def key_source(self): + """Defines order of keys for make function when called via `populate()`""" + return KeypointSet & KeypointSet.VideoFiles + + def make(self, key): + """Populates table with video metadata using CV2.""" + + file_path = (KeypointSet.VideoFiles & key).fetch1("video_path") + + nframes = 0 + px_height, px_width, fps = None, None, None + + file_path = (find_full_path(get_kpms_root_data_dir(), file_path[0])).as_posix() + + cap = cv2.VideoCapture(file_path) + info = ( + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), + int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FPS)), + ) + if px_height is not None: + assert (px_height, px_width, fps) == info + px_height, px_width, fps = info + nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + cap.release() + + self.insert1( + { + **key, + "px_height": px_height, + "px_width": px_width, + "nframes": nframes, + "fps": fps, + "recording_duration": nframes / fps, + } + ) + + +@schema +class Bodyparts(dj.Manual): + """Body parts to use in the model + + Attributes: + anterior_bodyparts(longblob): list of strings of anterior bodyparts + posterior_bodyparts(longblob): list of strings of posterior bodyparts + use_bodyparts(longblob): list of strings of bodyparts to be used + """ + + definition = """ + -> KeypointSet + bodyparts_id : int + --- + anterior_bodyparts : blob # list of strings of anterior bodyparts + posterior_bodyparts : blob # list of strings of posterior bodyparts + use_bodyparts : blob # list of strings of bodyparts to be used + """ + + +@schema +class PCATask(dj.Manual): + definition = """# Manual table for defining a data loading task ready to be run + -> KeypointSet + -> Bodyparts + --- + project_path='' : varchar(255) # KPMS's project_path in config relative to root + task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation + """ + + class FormattedDataset(dj.Part): + definition = """ + -> master + --- + config : longblob # stored full config file + coordinates : longblob + confidences : longblob + bodyparts : longblob + data : longblob + metadata : longblob + """ + + @classmethod + def generate(cls, key): + # kpms bodyparts + anterior_bodyparts, posterior_bodyparts, use_bodyparts = ( + Bodyparts & key + ).fetch1( + "anterior_bodyparts", + "posterior_bodyparts", + "use_bodyparts", + ) + + # kpms project path + project_path = get_kpms_root_data_dir() + + task_mode = (PCATask & key).fetch1("task_mode") + + # pose estimation params + format, extension = (KeypointSet.PoseEstimationMethod & key).fetch1( + "format", "extension" + ) + + video_path = (KeypointSet.VideoFiles & key).fetch("video_path") + + kpset_path = (KeypointSet & key).fetch1("kpset_path") + kpset_path = find_full_path(get_kpms_root_data_dir(), kpset_path) + + import keypoint_moseq as kpms + + # define config file for kpms with anonymous function + kpms_config = lambda: kpms.load_config(project_path) + + # setup kpms project, create a new project dir and config.yml + if task_mode == "trigger": + if format == "deeplabcut": + kpms.setup_project( + project_path, deeplabcut_config=kpset_path.as_posix() + ) + else: + kpms.setup_project(project_path) + + # elif task_mode == "load": + + # update kpms config file + kpms.update_config( + project_path, + video_dir=video_path, + anterior_bodyparts=anterior_bodyparts, + posterior_bodyparts=posterior_bodyparts, + use_bodyparts=use_bodyparts, + ) + + # load data (e.g. from DeepLabCut) + coordinates, confidences, bodyparts = kpms.load_keypoints( + filepath_pattern=video_path, format=format, extension=extension + ) + + # format data for modeling + data, metadata = kpms.format_data(coordinates, confidences, **kpms_config()) + + cls.insert1( + dict( + **key, + config=kpms_config(), + coordinates=coordinates, + confidences=confidences, + bodyparts=bodyparts, + data=data, + metadata=metadata, + ) + ) + + auto_generate_entries = generate + + +@schema +class PCAFitting(dj.Computed): + definition = """ + -> PCATask + --- + pca_fitting_time : datetime # Time of generation of the PCA fitting analysis + """ + + def make(self, key): + from keypoint_moseq import ( + load_pca, + fit_pca, + save_pca, + print_dims_to_explain_variance, + plot_scree, + plot_pcs, + ) + + task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") + data, config = (PCATask.FormattedDataset & key).fetch1("data", "config") + + project_path = find_full_path(get_kpms_root_data_dir(), project_path) + + if task_mode == "load": + pca = load_pca(**data, **config()) + + elif task_mode == "trigger": + pca = fit_pca(**data, **config()) + save_pca(pca, project_path) + creation_time = datetime.strftime("%Y-%m-%d %H:%M:%S") + + print_dims_to_explain_variance(pca, 0.9) + plot_scree(pca, project_dir=project_path) + plot_pcs(pca, project_dir=project_path, **config()) + + self.insert1(**key, pca_fitting_time=creation_time) + + +@schema +class LatentDimension(dj.Lookup): + definition = """ + latent_dim : int + --- + latent_dim_description='' : varchar(1000) + """ + + +@schema +class UpdateLatentDimension(dj.Computed): + definition = """ + -> PCAFitting + -> PCATask + -> LatentDimension + """ + + def make(self, key): + # update latent_dim in config_file + from keypoint_moseq import update_config + + project_path = (PCATask & key).fetch1("project_path") + latent_dim = (LatentDimension & key).fetch1("latent_dim") + update_config(project_path, latent_dim=latent_dim) diff --git a/element_moseq/train.py b/element_moseq/train.py deleted file mode 100644 index 53f47d8..0000000 --- a/element_moseq/train.py +++ /dev/null @@ -1,230 +0,0 @@ -import datajoint as dj -import matplotlib.pyplot as plt -import cv2 -from typing import Optional - -import inspect -import importlib -import os -from pathlib import Path -from element_interface.utils import find_full_path, dict_to_uuid - -schema = dj.schema() -_linking_module = None - - -def activate( - train_schema_name: str, - *, - create_schema: bool = True, - create_tables: bool = True, - linking_module: str = None, -): - """Activate this schema. - - Args: - train_schema_name (str): schema name on the database server - create_schema (bool): when True (default), create schema in the database if it - does not yet exist. - create_tables (bool): when True (default), create schema tables in the database - if they do not yet exist. - linking_module (str): a module (or name) containing the required dependencies. - - Dependencies: - Functions: - get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) - with all behavioral recordings, as (list of) string(s). - get_kpms_processed_data_dir(): Optional. Returns absolute path for processed - data. Defaults to session video subfolder. - """ - - if isinstance(linking_module, str): - linking_module = importlib.import_module(linking_module) - assert inspect.ismodule( - linking_module - ), "The argument 'dependency' must be a module's name or a module" - assert hasattr( - linking_module, "get_kpms_root_data_dir" - ), "The linking module must specify a lookup function for a root data directory" - - global _linking_module - _linking_module = linking_module - - # activate - schema.activate( - train_schema_name, - create_schema=create_schema, - create_tables=create_tables, - add_objects=_linking_module.__dict__, - ) - - -# -------------- Functions required by element-moseq --------------- - - -def get_kpms_root_data_dir() -> list: - """Pulls relevant func from parent namespace to specify root data dir(s). - - It is recommended that all paths in DataJoint Elements stored as relative - paths, with respect to some user-configured "root" director(y/ies). The - root(s) may vary between data modalities and user machines. Returns a full path - string or list of strings for possible root data directories. - """ - root_directories = _linking_module.get_kpms_root_data_dir() - if isinstance(root_directories, (str, Path)): - root_directories = [root_directories] - - if ( - hasattr(_linking_module, "get_kpms_processed_data_dir") - and get_kpms_processed_data_dir() not in root_directories - ): - root_directories.append(_linking_module.get_kpms_processed_data_dir()) - - return root_directories - - -def get_kpms_processed_data_dir() -> Optional[str]: - """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. - - Method in parent namespace should provide a string to a directory where KPMS output - files will be stored. If unspecified, output files will be stored in the - session directory 'videos' folder, per DeepLabCut default. - """ - if hasattr(_linking_module, "get_kpms_processed_data_dir"): - return _linking_module.get_kpms_processed_data_dir() - else: - return None - - -# ----------------------------- Table declarations ---------------------- - - -@schema -class VideoSet(dj.Manual): - definition = """ - -> Session - videoset_id: int - --- - -> Device - videoset_path: varchar(255) #file path of the video, relative to root data directory - """ - - class VideoIndex(dj.Part): - definition = """ - -> master - video_id: int - --- - video_path: varchar(255) # filepath of video, relative to root data directory - """ - - -@schema -class RecordingInfo(dj.Imported): - """Automated table with video file metadata. - - Attributes: - px_height (smallint): Height in pixels. - px_width (smallint): Width in pixels. - nframes (int): Number of frames. - fps (int): Optional. Frames per second, Hz. - recording_datetime (datetime): Optional. Datetime for the start of recording. - recording_duration (float): video duration (s) from nframes / fps.""" - - definition = """ - -> VideoSet.VideoIndex - - --- - px_height : smallint # height in pixels - px_width : smallint # width in pixels - nframes : int # number of frames - fps = NULL : int # (Hz) frames per second - recording_datetime = NULL : datetime # Datetime for the start of the recording - recording_duration : float # video duration (s) from nframes / fps - """ - - def make(self, key): - """Populates table with video metadata using CV2.""" - - file_path = (VideoSet.VideoIndex & key).fetch("video_path") - - nframes = 0 - px_height, px_width, fps = None, None, None - - file_path = (find_full_path(get_kpms_root_data_dir(), file_path)).as_posix() - - cap = cv2.VideoCapture(file_path) - info = ( - int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), - int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), - int(cap.get(cv2.CAP_PROP_FPS)), - ) - if px_height is not None: - assert (px_height, px_width, fps) == info - px_height, px_width, fps = info - nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) - cap.release() - - self.insert1( - { - **key, - "px_height": px_height, - "px_width": px_width, - "nframes": nframes, - "fps": fps, - "recording_duration": nframes / fps, - } - ) - - -@schema -class KeypointsSet(dj.Manual): - """Input data containing keypoints and the parameter set used during pose estimation inference (E.g. DeepLabCut).""" - - definition = """ - -> VideoSet - kpset_id : int - --- - kpset_path : varchar(255) # keypoints path of the pose estimation method, relative to root - config_path : varchar(255) # config file path of the pose estimation method, relative to root - kp_description='' : varchar(300) # Optional. User-entered description. - """ - - class BodypartsParamSet(dj.Part): - """Body parts to use in the model - - Attributes: - anterior_bodyparts(longblob): list of strings of anterior bodyparts - posterior_bodyparts(longblob): list of strings of posterior bodyparts - use_bodyparts(longblob): list of strings of bodyparts to be used - """ - - definition = """ - -> master - bodypartset_id : int - --- - anterior_bodyparts : varchar(100) # list of strings of anterior bodyparts - posterior_bodyparts : varchar(100) # list of strings of posterior bodyparts - use_bodyparts : longblob # list of strings of bodyparts to be used - """ - - -@schema -class PoseEstimationMethod(dj.Lookup): - definition = """ # Parameters used to obtain the keypoints data based on a specific pose estimation method - -> KeypointsSet - method_id : int - --- - format='deeplabcut' : enum('deeplabcut', 'sleap') # pose estimation method - extension='h5' : enum('h5', 'csv') - """ - - -@schema -class KpmsProject(dj.Manual): - definition = """ - -> Session - kpms_project_id : int - --- - kpms_project_path : varchar(255) # kpms project path - project_description : varchar(300) # User-friendly description of the kpms project - """ diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index 392f265..1885085 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -36,296 +36,65 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2023-12-18 22:09:52,236][INFO]: Connecting milagros@db.datajoint.com:3306\n", - "[2023-12-18 22:09:53,727][INFO]: Connected milagros@db.datajoint.com:3306\n" - ] - }, - { - "data": { - "text/plain": [ - "DataJoint connection (connected) milagros@db.datajoint.com:3306" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "dj.conn()" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2023-12-18 22:10:01,266][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" - ] - } - ], + "outputs": [], "source": [ - "from tutorial_pipeline import lab, subject, session, train, Device" + "# dj.schema('vathes-team_devlab_milagros_moseq_testing3_pca').drop()" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# train.BodypartsParamSet.drop()\n", - "# train.PoseEstimationMethod.drop()\n", - "# train.KeypointsSet.drop_quick()\n", - "# train.RecordingInfo.drop_quick()\n", - "# train.VideoSet.VideoIndex.delete(force=True)\n", - "# train.VideoSet.drop()\n" + "from tutorial_pipeline import lab, subject, session, pca, model, Device" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#dj.Diagram(subject) + dj.Diagram(session) + dj.Diagram(train)\n", - "#dj.Diagram(session) + dj.Diagram(train)" + "# pca.KeypointSet.VideoFiles.delete_quick()\n", + "# pca.KeypointSet.PoseEstimationMethod.delete_quick()\n", + "# pca.PCAInfo.delete_quick()\n", + "# pca.KeypointSet.delete()" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "train.KeypointsSet\n", - "\n", - "\n", - "train.KeypointsSet\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.KeypointsSet.BodypartsParamSet\n", - "\n", - "\n", - "train.KeypointsSet.BodypartsParamSet\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.KeypointsSet->train.KeypointsSet.BodypartsParamSet\n", - "\n", - "\n", - "\n", - "\n", - "train.PoseEstimationMethod\n", - "\n", - "\n", - "train.PoseEstimationMethod\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.KeypointsSet->train.PoseEstimationMethod\n", - "\n", - "\n", - "\n", - "\n", - "train.RecordingInfo\n", - "\n", - "\n", - "train.RecordingInfo\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.VideoSet.VideoIndex\n", - "\n", - "\n", - "train.VideoSet.VideoIndex\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.VideoSet.VideoIndex->train.RecordingInfo\n", - "\n", - "\n", - "\n", - "\n", - "train.KpmsProject\n", - "\n", - "\n", - "train.KpmsProject\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.VideoSet\n", - "\n", - "\n", - "train.VideoSet\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "train.VideoSet->train.KeypointsSet\n", - "\n", - "\n", - "\n", - "\n", - "train.VideoSet->train.VideoSet.VideoIndex\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "dj.Diagram(train)" + "dj.Diagram(pca)\n", + "#+ dj.Diagram(model)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

device

\n", - " \n", - "
\n", - "

videoset_path

\n", - " file path of the video, relative to root data directory\n", - "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id device videoset_path \n", - "+----------+ +------------+ +------------+ +---------+ +------------+\n", - "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", - " (Total: 1)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.VideoSet()" + "pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -352,459 +121,67 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

device

\n", - " \n", - "
\n", - "

modality

\n", - " \n", - "
\n", - "

description

\n", - " \n", - "
Camera1Pose EstimationPanasonic HC-V380K
Camera2Pose EstimationPanasonic HC-V770K
\n", - " \n", - "

Total: 2

\n", - " " - ], - "text/plain": [ - "*device modality description \n", - "+---------+ +------------+ +------------+\n", - "Camera1 Pose Estimatio Panasonic HC-V\n", - "Camera2 Pose Estimatio Panasonic HC-V\n", - " (Total: 2)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Device()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "recording_key = dict(subject=\"subject1\",\n", + "kpset_key = dict(subject=\"subject1\",\n", " session_datetime=\"2021-06-02 14:04:22\",\n", - " videoset_id=1)\n", - "train.VideoSet.insert1({**recording_key, \n", - " \"videoset_path\":\"./input_data/videos\",\n", - " \"device\":\"Camera1\"},\n", + " kpset_id=1)\n", + "pca.KeypointSet.insert1({**kpset_key, \n", + " \"kpset_path\":\"/input_data/videos\",\n", + " \"kpset_description\":\"testing pca schema\"},\n", " skip_duplicates=True)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

device

\n", - " \n", - "
\n", - "

videoset_path

\n", - " file path of the video, relative to root data directory\n", - "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id device videoset_path \n", - "+----------+ +------------+ +------------+ +---------+ +------------+\n", - "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", - " (Total: 1)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.VideoSet()" + "pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "video_files = [\"./input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", - " \"./input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", - " \"./input_data/videos/21_12_2_def6b_2.top.ir.mp4\"]\n", + "video_files = [\"/input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", + " \"/input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", + " \"/input_data/videos/21_12_2_def6b_2.top.ir.mp4\"]\n", "\n", - "train.VideoSet.VideoIndex.insert(\n", - " ({**recording_key, \"video_id\":v_idx, \"video_path\":Path(f)}\n", - " for v_idx, f in enumerate(video_files)),skip_duplicates=True\n", + "pca.KeypointSet.VideoFiles.insert(\n", + " ({**kpset_key, \"video_id\":v_idx, \"video_path\":Path(f)}\n", + " for v_idx, f in enumerate(video_files)),\n", + " skip_duplicates=True\n", ")" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

device

\n", - " \n", - "
\n", - "

videoset_path

\n", - " file path of the video, relative to root data directory\n", - "
subject12021-06-02 14:04:221Camera1./input_data/videos
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id device videoset_path \n", - "+----------+ +------------+ +------------+ +---------+ +------------+\n", - "subject1 2021-06-02 14: 1 Camera1 ./input_data/v\n", - " (Total: 1)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.VideoSet()" + "pca.KeypointSet.VideoFiles()" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

video_id

\n", - " \n", - "
\n", - "

px_height

\n", - " height in pixels\n", - "
\n", - "

px_width

\n", - " width in pixels\n", - "
\n", - "

nframes

\n", - " number of frames\n", - "
\n", - "

fps

\n", - " (Hz) frames per second\n", - "
\n", - "

recording_datetime

\n", - " Datetime for the start of the recording\n", - "
\n", - "

recording_duration

\n", - " video duration (s) from nframes / fps\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *video_id px_height px_width nframes fps recording_date recording_dura\n", - "+---------+ +------------+ +------------+ +----------+ +-----------+ +----------+ +---------+ +-----+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.RecordingInfo()" + "pca.KeypointSet.PoseEstimationMethod.insert1(\n", + " {**kpset_key,\n", + " \"format\":\"deeplabcut\",\n", + " \"extension\":\"h5\",\n", + " \"device\":\"Camera1\"},\n", + " skip_duplicates=True\n", + ")" ] }, { @@ -813,664 +190,81 @@ "metadata": {}, "outputs": [], "source": [ - "# train.RecordingInfo.populate()\n", - "# train.RecordingInfo()" + "pca.KeypointSet.PoseEstimationMethod()" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'subject': 'subject1',\n", - " 'session_datetime': '2021-06-02 14:04:22',\n", - " 'videoset_id': 1}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "recording_key" + "# pca.RecordingInfo.populate()" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

kpset_path

\n", - " keypoints path of the pose estimation method, relative to root\n", - "
\n", - "

config_path

\n", - " config file path of the pose estimation method, relative to root\n", - "
\n", - "

kp_description

\n", - " Optional. User-entered description.\n", - "
subject12021-06-02 14:04:2211./input_data/videos/./data/inbox/input_data/config.yamlfirst test
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *kpset_id kpset_path config_path kp_description\n", - "+----------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 1 ./input_data/v ./data/inbox/i first test \n", - " (Total: 1)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.KeypointsSet()" + "pca.Bodyparts()" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# Insert data in KeypointsSet table\n", - "kpset_key = {**recording_key,\"kpset_id\":1}\n", - "train.KeypointsSet.insert1({**kpset_key,\n", - " \"kpset_path\":\"./input_data/videos/\",\n", - " \"config_path\":\"./data/inbox/input_data/config.yaml\",\n", - " \"kp_description\":\"first test\"},\n", - " skip_duplicates=True)\n", + "# Insert data in PCAInfo table\n", + "bodypart_key = {**kpset_key,\n", + " \"bodyparts_id\":1}\n", + "pca.Bodyparts.insert1({**bodypart_key,\n", + " \"anterior_bodyparts\":\"nose\",\n", + " \"posterior_bodyparts\":\"spine4\",\n", + " \"use_bodyparts\":['spine4', 'spine3', 'spine2', 'spine1',\n", + " 'head', 'nose', 'right ear', 'left ear']},\n", + " skip_duplicates=True)\n", "\n" ] }, { "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

kpset_path

\n", - " keypoints path of the pose estimation method, relative to root\n", - "
\n", - "

config_path

\n", - " config file path of the pose estimation method, relative to root\n", - "
\n", - "

kp_description

\n", - " Optional. User-entered description.\n", - "
subject12021-06-02 14:04:2211./input_data/videos/./data/inbox/input_data/config.yamlfirst test
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *kpset_id kpset_path config_path kp_description\n", - "+----------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 1 ./input_data/v ./data/inbox/i first test \n", - " (Total: 1)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train.KeypointsSet()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

method_id

\n", - " \n", - "
\n", - "

format

\n", - " pose estimation method\n", - "
\n", - "

extension

\n", - " \n", - "
subject12021-06-02 14:04:22111deeplabcuth5
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *kpset_id *method_id format extension \n", - "+----------+ +------------+ +------------+ +----------+ +-----------+ +------------+ +-----------+\n", - "subject1 2021-06-02 14: 1 1 1 deeplabcut h5 \n", - " (Total: 1)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train.PoseEstimationMethod()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# Insert data in PoseEstimationMethod table\n", - "train.PoseEstimationMethod.insert1({**kpset_key,\n", - " \"method_id\":1, \n", - " \"format\":\"deeplabcut\",\n", - " \"extension\":\"h5\"}, \n", - " skip_duplicates=True)" + "pca.DataLoadingTask.insert1({**bodypart_key,\n", + " \"task_mode\":\"load\"},\n", + " skip_duplicates=True)" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

method_id

\n", - " \n", - "
\n", - "

format

\n", - " pose estimation method\n", - "
\n", - "

extension

\n", - " \n", - "
subject12021-06-02 14:04:22111deeplabcuth5
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *kpset_id *method_id format extension \n", - "+----------+ +------------+ +------------+ +----------+ +-----------+ +------------+ +-----------+\n", - "subject1 2021-06-02 14: 1 1 1 deeplabcut h5 \n", - " (Total: 1)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.PoseEstimationMethod()" + "pca.DataLoadingTask()" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

videoset_id

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodypartset_id

\n", - " \n", - "
\n", - "

anterior_bodyparts

\n", - " list of strings of anterior bodyparts\n", - "
\n", - "

posterior_bodyparts

\n", - " list of strings of posterior bodyparts\n", - "
\n", - "

use_bodyparts

\n", - " list of strings of bodyparts to be used\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *videoset_id *kpset_id *bodypartset_i anterior_bodyp posterior_body use_bodyparts \n", - "+---------+ +------------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "train.KeypointsSet.BodypartsParamSet()" + "pca.DataLoadingTask.generate(bodypart_key)" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "OperationalError", - "evalue": "(1241, 'Operand should contain 1 column(s)')", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mOperationalError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[25], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m# Insert data in BodypartsParamset table\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m train\u001b[39m.\u001b[39;49mKeypointsSet\u001b[39m.\u001b[39;49mBodypartsParamSet\u001b[39m.\u001b[39;49minsert1({\n\u001b[1;32m 3\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkpset_key,\n\u001b[1;32m 4\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mbodypartset_id\u001b[39;49m\u001b[39m\"\u001b[39;49m:\u001b[39m1\u001b[39;49m,\n\u001b[1;32m 5\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39manterior_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m\"\u001b[39;49m\u001b[39mnose\u001b[39;49m\u001b[39m\"\u001b[39;49m],\n\u001b[1;32m 6\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mposterior_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m\"\u001b[39;49m\u001b[39mspine4\u001b[39;49m\u001b[39m\"\u001b[39;49m],\n\u001b[1;32m 7\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39muse_bodyparts\u001b[39;49m\u001b[39m\"\u001b[39;49m:[\u001b[39m'\u001b[39;49m\u001b[39mspine4\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine3\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine2\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mspine1\u001b[39;49m\u001b[39m'\u001b[39;49m,\n\u001b[1;32m 8\u001b[0m \u001b[39m'\u001b[39;49m\u001b[39mhead\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mnose\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mright ear\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39mleft ear\u001b[39;49m\u001b[39m'\u001b[39;49m]\n\u001b[1;32m 9\u001b[0m })\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/table.py:337\u001b[0m, in \u001b[0;36mTable.insert1\u001b[0;34m(self, row, **kwargs)\u001b[0m\n\u001b[1;32m 330\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39minsert1\u001b[39m(\u001b[39mself\u001b[39m, row, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 331\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 332\u001b[0m \u001b[39m Insert one data record into the table. For ``kwargs``, see ``insert()``.\u001b[39;00m\n\u001b[1;32m 333\u001b[0m \n\u001b[1;32m 334\u001b[0m \u001b[39m :param row: a numpy record, a dict-like object, or an ordered sequence to be inserted\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[39m as one row.\u001b[39;00m\n\u001b[1;32m 336\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49minsert((row,), \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/table.py:440\u001b[0m, in \u001b[0;36mTable.insert\u001b[0;34m(self, rows, replace, skip_duplicates, ignore_extra_fields, allow_direct_insert)\u001b[0m\n\u001b[1;32m 424\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 425\u001b[0m query \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m{command}\u001b[39;00m\u001b[39m INTO \u001b[39m\u001b[39m{destination}\u001b[39;00m\u001b[39m(`\u001b[39m\u001b[39m{fields}\u001b[39;00m\u001b[39m`) VALUES \u001b[39m\u001b[39m{placeholders}\u001b[39;00m\u001b[39m{duplicate}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(\n\u001b[1;32m 426\u001b[0m command\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mREPLACE\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mif\u001b[39;00m replace \u001b[39melse\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mINSERT\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 427\u001b[0m destination\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfrom_clause(),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 438\u001b[0m ),\n\u001b[1;32m 439\u001b[0m )\n\u001b[0;32m--> 440\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mconnection\u001b[39m.\u001b[39;49mquery(\n\u001b[1;32m 441\u001b[0m query,\n\u001b[1;32m 442\u001b[0m args\u001b[39m=\u001b[39;49m\u001b[39mlist\u001b[39;49m(\n\u001b[1;32m 443\u001b[0m itertools\u001b[39m.\u001b[39;49mchain\u001b[39m.\u001b[39;49mfrom_iterable(\n\u001b[1;32m 444\u001b[0m (v \u001b[39mfor\u001b[39;49;00m v \u001b[39min\u001b[39;49;00m r[\u001b[39m\"\u001b[39;49m\u001b[39mvalues\u001b[39;49m\u001b[39m\"\u001b[39;49m] \u001b[39mif\u001b[39;49;00m v \u001b[39mis\u001b[39;49;00m \u001b[39mnot\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m) \u001b[39mfor\u001b[39;49;00m r \u001b[39min\u001b[39;49;00m rows\n\u001b[1;32m 445\u001b[0m )\n\u001b[1;32m 446\u001b[0m ),\n\u001b[1;32m 447\u001b[0m )\n\u001b[1;32m 448\u001b[0m \u001b[39mexcept\u001b[39;00m UnknownAttributeError \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 449\u001b[0m \u001b[39mraise\u001b[39;00m err\u001b[39m.\u001b[39msuggest(\n\u001b[1;32m 450\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mTo ignore extra fields in insert, set ignore_extra_fields=True\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m )\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:340\u001b[0m, in \u001b[0;36mConnection.query\u001b[0;34m(self, query, args, as_dict, suppress_warnings, reconnect)\u001b[0m\n\u001b[1;32m 338\u001b[0m cursor \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_conn\u001b[39m.\u001b[39mcursor(cursor\u001b[39m=\u001b[39mcursor_class)\n\u001b[1;32m 339\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 340\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_execute_query(cursor, query, args, suppress_warnings)\n\u001b[1;32m 341\u001b[0m \u001b[39mexcept\u001b[39;00m errors\u001b[39m.\u001b[39mLostConnectionError:\n\u001b[1;32m 342\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m reconnect:\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:296\u001b[0m, in \u001b[0;36mConnection._execute_query\u001b[0;34m(cursor, query, args, suppress_warnings)\u001b[0m\n\u001b[1;32m 294\u001b[0m cursor\u001b[39m.\u001b[39mexecute(query, args)\n\u001b[1;32m 295\u001b[0m \u001b[39mexcept\u001b[39;00m client\u001b[39m.\u001b[39merr\u001b[39m.\u001b[39mError \u001b[39mas\u001b[39;00m err:\n\u001b[0;32m--> 296\u001b[0m \u001b[39mraise\u001b[39;00m translate_query_error(err, query)\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/datajoint/connection.py:294\u001b[0m, in \u001b[0;36mConnection._execute_query\u001b[0;34m(cursor, query, args, suppress_warnings)\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[39mif\u001b[39;00m suppress_warnings:\n\u001b[1;32m 292\u001b[0m \u001b[39m# suppress all warnings arising from underlying SQL library\u001b[39;00m\n\u001b[1;32m 293\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 294\u001b[0m cursor\u001b[39m.\u001b[39;49mexecute(query, args)\n\u001b[1;32m 295\u001b[0m \u001b[39mexcept\u001b[39;00m client\u001b[39m.\u001b[39merr\u001b[39m.\u001b[39mError \u001b[39mas\u001b[39;00m err:\n\u001b[1;32m 296\u001b[0m \u001b[39mraise\u001b[39;00m translate_query_error(err, query)\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/cursors.py:153\u001b[0m, in \u001b[0;36mCursor.execute\u001b[0;34m(self, query, args)\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[39mpass\u001b[39;00m\n\u001b[1;32m 151\u001b[0m query \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmogrify(query, args)\n\u001b[0;32m--> 153\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_query(query)\n\u001b[1;32m 154\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_executed \u001b[39m=\u001b[39m query\n\u001b[1;32m 155\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/cursors.py:322\u001b[0m, in \u001b[0;36mCursor._query\u001b[0;34m(self, q)\u001b[0m\n\u001b[1;32m 320\u001b[0m conn \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_get_db()\n\u001b[1;32m 321\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_clear_result()\n\u001b[0;32m--> 322\u001b[0m conn\u001b[39m.\u001b[39;49mquery(q)\n\u001b[1;32m 323\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_do_get_result()\n\u001b[1;32m 324\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrowcount\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:558\u001b[0m, in \u001b[0;36mConnection.query\u001b[0;34m(self, sql, unbuffered)\u001b[0m\n\u001b[1;32m 556\u001b[0m sql \u001b[39m=\u001b[39m sql\u001b[39m.\u001b[39mencode(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mencoding, \u001b[39m\"\u001b[39m\u001b[39msurrogateescape\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 557\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_execute_command(COMMAND\u001b[39m.\u001b[39mCOM_QUERY, sql)\n\u001b[0;32m--> 558\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_affected_rows \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_read_query_result(unbuffered\u001b[39m=\u001b[39;49munbuffered)\n\u001b[1;32m 559\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_affected_rows\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:822\u001b[0m, in \u001b[0;36mConnection._read_query_result\u001b[0;34m(self, unbuffered)\u001b[0m\n\u001b[1;32m 820\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 821\u001b[0m result \u001b[39m=\u001b[39m MySQLResult(\u001b[39mself\u001b[39m)\n\u001b[0;32m--> 822\u001b[0m result\u001b[39m.\u001b[39;49mread()\n\u001b[1;32m 823\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result \u001b[39m=\u001b[39m result\n\u001b[1;32m 824\u001b[0m \u001b[39mif\u001b[39;00m result\u001b[39m.\u001b[39mserver_status \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:1200\u001b[0m, in \u001b[0;36mMySQLResult.read\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1198\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mread\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m 1199\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m-> 1200\u001b[0m first_packet \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mconnection\u001b[39m.\u001b[39;49m_read_packet()\n\u001b[1;32m 1202\u001b[0m \u001b[39mif\u001b[39;00m first_packet\u001b[39m.\u001b[39mis_ok_packet():\n\u001b[1;32m 1203\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_read_ok_packet(first_packet)\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/connections.py:772\u001b[0m, in \u001b[0;36mConnection._read_packet\u001b[0;34m(self, packet_type)\u001b[0m\n\u001b[1;32m 770\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result\u001b[39m.\u001b[39munbuffered_active \u001b[39mis\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[1;32m 771\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result\u001b[39m.\u001b[39munbuffered_active \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m\n\u001b[0;32m--> 772\u001b[0m packet\u001b[39m.\u001b[39;49mraise_for_error()\n\u001b[1;32m 773\u001b[0m \u001b[39mreturn\u001b[39;00m packet\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/protocol.py:221\u001b[0m, in \u001b[0;36mMysqlPacket.raise_for_error\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[39mif\u001b[39;00m DEBUG:\n\u001b[1;32m 220\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39merrno =\u001b[39m\u001b[39m\"\u001b[39m, errno)\n\u001b[0;32m--> 221\u001b[0m err\u001b[39m.\u001b[39;49mraise_mysql_exception(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_data)\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/pymysql/err.py:143\u001b[0m, in \u001b[0;36mraise_mysql_exception\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[39mif\u001b[39;00m errorclass \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 142\u001b[0m errorclass \u001b[39m=\u001b[39m InternalError \u001b[39mif\u001b[39;00m errno \u001b[39m<\u001b[39m \u001b[39m1000\u001b[39m \u001b[39melse\u001b[39;00m OperationalError\n\u001b[0;32m--> 143\u001b[0m \u001b[39mraise\u001b[39;00m errorclass(errno, errval)\n", - "\u001b[0;31mOperationalError\u001b[0m: (1241, 'Operand should contain 1 column(s)')" - ] - } - ], + "outputs": [], "source": [ - "# Insert data in BodypartsParamset table\n", - "train.KeypointsSet.BodypartsParamSet.insert1({\n", - " **kpset_key,\n", - " \"bodypartset_id\":1,\n", - " \"anterior_bodyparts\":[\"nose\"],\n", - " \"posterior_bodyparts\":[\"spine4\"],\n", - " \"use_bodyparts\":['spine4', 'spine3', 'spine2', 'spine1',\n", - " 'head', 'nose', 'right ear', 'left ear']\n", - " })" + "pca.DataLoadingTask.FormattedDataset()" ] } ], diff --git a/notebooks/tutorial_pipeline.py b/notebooks/tutorial_pipeline.py index 9e5da95..aa48271 100644 --- a/notebooks/tutorial_pipeline.py +++ b/notebooks/tutorial_pipeline.py @@ -4,7 +4,7 @@ from element_animal import subject from element_session import session_with_datetime as session -from element_moseq import train +from element_moseq import pca, model from element_animal.subject import Subject from element_lab.lab import Source, Lab, Protocol, User, Project @@ -91,5 +91,5 @@ class Device(dj.Lookup): # Activate Keypoint-MoSeq schema ----------------------------------- -train.activate(db_prefix + "train", linking_module=__name__) -# model.activate(db_prefix + "model", linking_module=__name__) +pca.activate(db_prefix + "pca", linking_module=__name__) +model.activate(db_prefix + "model", linking_module=__name__) From 69787e88209cffb4255bd411433e431975a06dc2 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 2 Jan 2024 07:37:08 +0100 Subject: [PATCH 24/90] Testing notebook --- notebooks/testing.ipynb | 1311 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 1246 insertions(+), 65 deletions(-) diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index 1885085..d491511 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -27,57 +27,217 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dj.config.load(\"dj_local_conf.json\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2024-01-02 07:27:12,131][INFO]: Connecting milagros@db.datajoint.com:3306\n", + "[2024-01-02 07:27:13,535][INFO]: Connected milagros@db.datajoint.com:3306\n" + ] + }, + { + "data": { + "text/plain": [ + "DataJoint connection (connected) milagros@db.datajoint.com:3306" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "dj.conn()" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# dj.schema('vathes-team_devlab_milagros_moseq_testing3_pca').drop()" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2024-01-02 07:27:13,795][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + ] + } + ], "source": [ "from tutorial_pipeline import lab, subject, session, pca, model, Device" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# pca.KeypointSet.VideoFiles.delete_quick()\n", - "# pca.KeypointSet.PoseEstimationMethod.delete_quick()\n", - "# pca.PCAInfo.delete_quick()\n", - "# pca.KeypointSet.delete()" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.Bodyparts\n", + "\n", + "\n", + "pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.Bodyparts->pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCAFitting\n", + "\n", + "\n", + "pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.UpdateLatentDimension\n", + "\n", + "\n", + "pca.UpdateLatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCAFitting->pca.UpdateLatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "pca.LatentDimension\n", + "\n", + "\n", + "pca.LatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.LatentDimension->pca.UpdateLatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet\n", + "\n", + "\n", + "pca.KeypointSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet->pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet->pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "\n", + "\n", + "pca.RecordingInfo\n", + "\n", + "\n", + "pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask->pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask->pca.UpdateLatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask->pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "dj.Diagram(pca)\n", "#+ dj.Diagram(model)" @@ -85,16 +245,108 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

kpset_path

\n", + " Path relative to root data directory where the videos and their keypoints are located.\n", + "
\n", + "

kpset_description

\n", + " Optional. User-entered description.\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id kpset_path kpset_descript\n", + "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -121,7 +373,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -136,16 +388,112 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

kpset_path

\n", + " Path relative to root data directory where the videos and their keypoints are located.\n", + "
\n", + "

kpset_description

\n", + " Optional. User-entered description.\n", + "
subject12021-06-02 14:04:221/input_data/videostesting pca schema
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id kpset_path kpset_descript\n", + "+----------+ +------------+ +----------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 /input_data/vi testing pca sc\n", + " (Total: 1)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -162,16 +510,122 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

video_id

\n", + " \n", + "
\n", + "

video_path

\n", + " Filepath of each video, relative to root data directory\n", + "
subject12021-06-02 14:04:2210/input_data/videos/21_11_8_one_mouse.top.ir.Mp4
subject12021-06-02 14:04:2211/input_data/videos/21_12_2_def6a_1.top.ir.mp4
subject12021-06-02 14:04:2212/input_data/videos/21_12_2_def6b_2.top.ir.mp4
\n", + " \n", + "

Total: 3

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *video_id video_path \n", + "+----------+ +------------+ +----------+ +----------+ +------------+\n", + "subject1 2021-06-02 14: 1 0 /input_data/vi\n", + "subject1 2021-06-02 14: 1 1 /input_data/vi\n", + "subject1 2021-06-02 14: 1 2 /input_data/vi\n", + " (Total: 3)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.KeypointSet.VideoFiles()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -186,16 +640,116 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

format

\n", + " deeplabcut, sleap\n", + "
\n", + "

extension

\n", + " h5, csv\n", + "
\n", + "

device

\n", + " \n", + "
subject12021-06-02 14:04:221deeplabcuth5Camera1
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id format extension device \n", + "+----------+ +------------+ +----------+ +------------+ +-----------+ +---------+\n", + "subject1 2021-06-02 14: 1 deeplabcut h5 Camera1 \n", + " (Total: 1)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.KeypointSet.PoseEstimationMethod()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -204,16 +758,120 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

anterior_bodyparts

\n", + " list of strings of anterior bodyparts\n", + "
\n", + "

posterior_bodyparts

\n", + " list of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " list of strings of bodyparts to be used\n", + "
subject12021-06-02 14:04:2211=BLOB==BLOB==BLOB=
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", + "+----------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", + " (Total: 1)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.Bodyparts()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -231,41 +889,564 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Manual table for defining a data loading task ready to be run\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

project_path

\n", + " KPMS's project_path in config relative to root\n", + "
\n", + "

task_mode

\n", + " 'load': load computed analysis results, 'trigger': trigger computation\n", + "
subject12021-06-02 14:04:2211/kpms_projectload
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", + "subject1 2021-06-02 14: 1 1 /kpms_project load \n", + " (Total: 1)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pca.PCATask()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "pca.DataLoadingTask.insert1({**bodypart_key,\n", + "pca.PCATask.insert1({**bodypart_key,\n", + " \"project_path\":\"/kpms_project\",\n", " \"task_mode\":\"load\"},\n", " skip_duplicates=True)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[24], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", + "File \u001b[0;32m~/Documents/datajoint-elements/element-moseq/element_moseq/pca.py:264\u001b[0m, in \u001b[0;36mPCATask.generate\u001b[0;34m(cls, key)\u001b[0m\n\u001b[1;32m 261\u001b[0m video_path \u001b[39m=\u001b[39m (KeypointSet\u001b[39m.\u001b[39mVideoFiles \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch(\u001b[39m\"\u001b[39m\u001b[39mvideo_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 263\u001b[0m kpset_path \u001b[39m=\u001b[39m (KeypointSet \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch1(\u001b[39m\"\u001b[39m\u001b[39mkpset_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 264\u001b[0m kpset_path \u001b[39m=\u001b[39m find_full_path(get_kpms_root_data_dir(), kpset_path)\n\u001b[1;32m 266\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mkeypoint_moseq\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mkpms\u001b[39;00m\n\u001b[1;32m 268\u001b[0m \u001b[39m# define config file for kpms with anonymous function\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/element_interface/utils.py:42\u001b[0m, in \u001b[0;36mfind_full_path\u001b[0;34m(root_directories, relative_path)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[39mif\u001b[39;00m (_to_Path(root_dir) \u001b[39m/\u001b[39m relative_path)\u001b[39m.\u001b[39mexists():\n\u001b[1;32m 40\u001b[0m \u001b[39mreturn\u001b[39;00m _to_Path(root_dir) \u001b[39m/\u001b[39m relative_path\n\u001b[0;32m---> 42\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mFileNotFoundError\u001b[39;00m(\n\u001b[1;32m 43\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mNo valid full-path found (from \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 44\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m for \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(root_directories, relative_path)\n\u001b[1;32m 45\u001b[0m )\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos" + ] + } + ], "source": [ - "pca.DataLoadingTask()" + "pca.PCATask.generate(bodypart_key)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

config

\n", + " stored full config file\n", + "
\n", + "

coordinates

\n", + " \n", + "
\n", + "

confidences

\n", + " \n", + "
\n", + "

bodyparts

\n", + " \n", + "
\n", + "

data

\n", + " \n", + "
\n", + "

metadata

\n", + " \n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id config coordinate confidence bodyparts data metadata \n", + "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "pca.DataLoadingTask.generate(bodypart_key)" + "pca.PCATask.FormattedDataset()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_fitting_time

\n", + " Time of generation of the PCA fitting analysis\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", + "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pca.PCAFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

latent_dim

\n", + " \n", + "
\n", + "

latent_dim_description

\n", + " \n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*latent_dim latent_dim_des\n", + "+------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "pca.DataLoadingTask.FormattedDataset()" + "pca.LatentDimension()" ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

latent_dim

\n", + " \n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *latent_dim \n", + "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pca.UpdateLatentDimension()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 6bf3a03da0b997ecc2fadfee2644ce81a7e1b4be Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 2 Jan 2024 07:39:32 +0100 Subject: [PATCH 25/90] testing notebook --- notebooks/testing.ipynb | 122 ++++++++++++++++++++++++---------------- 1 file changed, 73 insertions(+), 49 deletions(-) diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index d491511..4c0c7c9 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -25,34 +25,6 @@ "from pathlib import Path" ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2024-01-02 07:27:12,131][INFO]: Connecting milagros@db.datajoint.com:3306\n", - "[2024-01-02 07:27:13,535][INFO]: Connected milagros@db.datajoint.com:3306\n" - ] - }, - { - "data": { - "text/plain": [ - "DataJoint connection (connected) milagros@db.datajoint.com:3306" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dj.conn()" - ] - }, { "cell_type": "code", "execution_count": 6, @@ -72,15 +44,15 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\n", "pca.Bodyparts\n", @@ -161,9 +133,9 @@ "\n", "\n", "\n", - "\n", + "\n", "pca.KeypointSet.PoseEstimationMethod\n", - "\n", + "\n", "\n", "pca.KeypointSet.PoseEstimationMethod\n", "\n", @@ -175,9 +147,9 @@ "\n", "\n", "\n", - "\n", + "\n", "pca.KeypointSet.VideoFiles\n", - "\n", + "\n", "\n", "pca.KeypointSet.VideoFiles\n", "\n", @@ -208,9 +180,9 @@ "\n", "\n", "\n", - "\n", + "\n", "pca.PCATask.FormattedDataset\n", - "\n", + "\n", "\n", "pca.PCATask.FormattedDataset\n", "\n", @@ -221,26 +193,85 @@ "pca.PCATask->pca.PCATask.FormattedDataset\n", "\n", "\n", - "\n", + "\n", + "\n", + "model.Prefitting\n", + "\n", + "\n", + "model.Prefitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "model.FullFitting\n", + "\n", + "\n", + "model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", "\n", + "model.Prefitting->model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "model.Kappa\n", + "\n", + "\n", + "model.Kappa\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "model.InitializingTask\n", + "\n", + "\n", + "model.InitializingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "model.Initializing\n", + "\n", + "\n", + "model.Initializing\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "model.InitializingTask->model.Initializing\n", + "\n", + "\n", + "\n", + "\n", "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", "\n", "\n", + "\n", + "\n", + "model.Initializing->model.Prefitting\n", + "\n", + "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dj.Diagram(pca)\n", - "#+ dj.Diagram(model)" + "dj.Diagram(pca) + dj.Diagram(model)" ] }, { @@ -1440,13 +1471,6 @@ "source": [ "pca.UpdateLatentDimension()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 6bc6f8d999bd2d61837cd53457d230f4a6ed04b6 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 2 Jan 2024 08:17:35 +0100 Subject: [PATCH 26/90] WIP: redefine schema `model` and connect to `pca` --- element_moseq/model.py | 34 ++- element_moseq/pca.py | 3 +- notebooks/testing.ipynb | 539 ++++++++++++---------------------------- 3 files changed, 188 insertions(+), 388 deletions(-) diff --git a/element_moseq/model.py b/element_moseq/model.py index 1589a7b..1af707c 100644 --- a/element_moseq/model.py +++ b/element_moseq/model.py @@ -100,40 +100,52 @@ def get_kpms_processed_data_dir() -> Optional[str]: @schema -class Kappa(dj.Lookup): +class InitializationParamSet(dj.Lookup): definition = """ - kappa_id : int + paramset_id : int --- - kappa_min_value : int - kappa_max_value : int - kappa_description='' : varchar(1000) + num_iterations : int + kappa : int + paramset_description='' : varchar(1000) """ @schema -class InitializingTask(dj.Manual): +class FittingParamSet(dj.Lookup): definition = """ - -> Session - + paramset_id : int + --- + num_iterations : int + kappa : int + paramset_description='' : varchar(1000) """ @schema -class Initializing(dj.Computed): +class Prefitting(dj.Computed): definition = """ - -> InitializingTask -""" + -> InitializationParamSet + -> pca.PCAFitting + --- + model_name : varchar(20) + """ + def make(self, key): @schema class Prefitting(dj.Computed): definition = """ -> Initializing """ + return @schema class FullFitting(dj.Computed): definition = """ -> Prefitting + -> FittingParamSet """ + + def make(self, key): + return diff --git a/element_moseq/pca.py b/element_moseq/pca.py index 6e2ffb5..624da9b 100644 --- a/element_moseq/pca.py +++ b/element_moseq/pca.py @@ -317,6 +317,7 @@ class PCAFitting(dj.Computed): -> PCATask --- pca_fitting_time : datetime # Time of generation of the PCA fitting analysis + pca : longblob """ def make(self, key): @@ -346,7 +347,7 @@ def make(self, key): plot_scree(pca, project_dir=project_path) plot_pcs(pca, project_dir=project_path, **config()) - self.insert1(**key, pca_fitting_time=creation_time) + self.insert1(**key, pca_fitting_time=creation_time, pca=pca) @schema diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index 4c0c7c9..2c9a5c8 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -34,7 +34,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[2024-01-02 07:27:13,795][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + "[2024-01-02 08:13:28,851][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" ] } ], @@ -44,228 +44,224 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.Bodyparts\n", - "\n", - "\n", - "pca.Bodyparts\n", + "model.InitializationParamSet\n", + "\n", + "\n", + "model.InitializationParamSet\n", "\n", "\n", "\n", - "\n", - "\n", - "pca.PCATask\n", - "\n", - "\n", - "pca.PCATask\n", + "\n", + "\n", + "model.Prefitting\n", + "\n", + "\n", + "model.Prefitting\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.Bodyparts->pca.PCATask\n", - "\n", + "model.InitializationParamSet->model.Prefitting\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.PCAFitting\n", - "\n", - "\n", - "pca.PCAFitting\n", + "pca.LatentDimension\n", + "\n", + "\n", + "pca.LatentDimension\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "pca.UpdateLatentDimension\n", - "\n", - "\n", - "pca.UpdateLatentDimension\n", + "\n", + "\n", + "pca.UpdateLatentDimension\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.PCAFitting->pca.UpdateLatentDimension\n", - "\n", + "pca.LatentDimension->pca.UpdateLatentDimension\n", + "\n", "\n", - "\n", - "\n", - "pca.LatentDimension\n", - "\n", - "\n", - "pca.LatentDimension\n", + "\n", + "\n", + "pca.Bodyparts\n", + "\n", + "\n", + "pca.Bodyparts\n", "\n", "\n", "\n", - "\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.LatentDimension->pca.UpdateLatentDimension\n", - "\n", + "pca.Bodyparts->pca.PCATask\n", + "\n", "\n", "\n", - "\n", + "\n", "pca.KeypointSet\n", - "\n", - "\n", - "pca.KeypointSet\n", + "\n", + "\n", + "pca.KeypointSet\n", "\n", "\n", "\n", "\n", "\n", "pca.KeypointSet->pca.Bodyparts\n", - "\n", + "\n", "\n", "\n", "\n", "pca.KeypointSet->pca.PCATask\n", - "\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", - "\n", + "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet.VideoFiles\n", - "\n", - "\n", - "pca.KeypointSet.VideoFiles\n", + "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "pca.KeypointSet.PoseEstimationMethod\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", - "\n", + "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", + "\n", "\n", - "\n", - "\n", - "pca.RecordingInfo\n", - "\n", - "\n", - "pca.RecordingInfo\n", + "\n", + "\n", + "model.FullFitting\n", + "\n", + "\n", + "model.FullFitting\n", "\n", "\n", "\n", - "\n", + "\n", + "\n", + "model.FittingParamSet\n", + "\n", + "\n", + "model.FittingParamSet\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.PCATask->pca.PCAFitting\n", - "\n", + "model.FittingParamSet->model.FullFitting\n", + "\n", "\n", "\n", "\n", "pca.PCATask->pca.UpdateLatentDimension\n", - "\n", + "\n", "\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "pca.PCAFitting\n", + "\n", + "\n", + "pca.PCAFitting\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.PCATask->pca.PCATask.FormattedDataset\n", - "\n", + "pca.PCATask->pca.PCAFitting\n", + "\n", "\n", - "\n", - "\n", - "model.Prefitting\n", - "\n", - "\n", - "model.Prefitting\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", "\n", "\n", "\n", - "\n", - "\n", - "model.FullFitting\n", - "\n", - "\n", - "model.FullFitting\n", - "\n", - "\n", + "\n", + "\n", + "pca.PCATask->pca.PCATask.FormattedDataset\n", + "\n", "\n", "\n", - "\n", + "\n", "model.Prefitting->model.FullFitting\n", - "\n", + "\n", "\n", - "\n", - "\n", - "model.Kappa\n", - "\n", - "\n", - "model.Kappa\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "model.InitializingTask\n", - "\n", - "\n", - "model.InitializingTask\n", + "\n", + "\n", + "pca.RecordingInfo\n", + "\n", + "\n", + "pca.RecordingInfo\n", "\n", "\n", "\n", - "\n", - "\n", - "model.Initializing\n", - "\n", - "\n", - "model.Initializing\n", - "\n", - "\n", + "\n", + "\n", + "pca.PCAFitting->pca.UpdateLatentDimension\n", + "\n", "\n", - "\n", - "\n", - "model.InitializingTask->model.Initializing\n", - "\n", + "\n", + "\n", + "pca.PCAFitting->model.Prefitting\n", + "\n", "\n", "\n", - "\n", + "\n", "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", - "\n", - "\n", - "\n", - "\n", - "model.Initializing->model.Prefitting\n", - "\n", + "\n", "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -789,7 +785,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -872,26 +868,20 @@ "

use_bodyparts

\n", " list of strings of bodyparts to be used\n", " \n", - " subject1\n", - "2021-06-02 14:04:22\n", - "1\n", - "1\n", - "=BLOB=\n", - "=BLOB=\n", - "=BLOB= \n", + " \n", " \n", " \n", - "

Total: 1

\n", + "

Total: 0

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", - "+----------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", - "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", - " (Total: 1)" + "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", + "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" ] }, - "execution_count": 30, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -920,7 +910,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -1000,25 +990,20 @@ "

task_mode

\n", " 'load': load computed analysis results, 'trigger': trigger computation\n", " \n", - " subject1\n", - "2021-06-02 14:04:22\n", - "1\n", - "1\n", - "/kpms_project\n", - "load \n", + " \n", " \n", " \n", - "

Total: 1

\n", + "

Total: 0

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", - "subject1 2021-06-02 14: 1 1 /kpms_project load \n", - " (Total: 1)" + "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", + "\n", + " (Total: 0)" ] }, - "execution_count": 23, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -1029,7 +1014,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -1041,7 +1026,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1051,7 +1036,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[24], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", + "Cell \u001b[0;32mIn[22], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", "File \u001b[0;32m~/Documents/datajoint-elements/element-moseq/element_moseq/pca.py:264\u001b[0m, in \u001b[0;36mPCATask.generate\u001b[0;34m(cls, key)\u001b[0m\n\u001b[1;32m 261\u001b[0m video_path \u001b[39m=\u001b[39m (KeypointSet\u001b[39m.\u001b[39mVideoFiles \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch(\u001b[39m\"\u001b[39m\u001b[39mvideo_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 263\u001b[0m kpset_path \u001b[39m=\u001b[39m (KeypointSet \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch1(\u001b[39m\"\u001b[39m\u001b[39mkpset_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 264\u001b[0m kpset_path \u001b[39m=\u001b[39m find_full_path(get_kpms_root_data_dir(), kpset_path)\n\u001b[1;32m 266\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mkeypoint_moseq\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mkpms\u001b[39;00m\n\u001b[1;32m 268\u001b[0m \u001b[39m# define config file for kpms with anonymous function\u001b[39;00m\n", "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/element_interface/utils.py:42\u001b[0m, in \u001b[0;36mfind_full_path\u001b[0;34m(root_directories, relative_path)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[39mif\u001b[39;00m (_to_Path(root_dir) \u001b[39m/\u001b[39m relative_path)\u001b[39m.\u001b[39mexists():\n\u001b[1;32m 40\u001b[0m \u001b[39mreturn\u001b[39;00m _to_Path(root_dir) \u001b[39m/\u001b[39m relative_path\n\u001b[0;32m---> 42\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mFileNotFoundError\u001b[39;00m(\n\u001b[1;32m 43\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mNo valid full-path found (from \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 44\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m for \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(root_directories, relative_path)\n\u001b[1;32m 45\u001b[0m )\n", "\u001b[0;31mFileNotFoundError\u001b[0m: No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos" @@ -1064,123 +1049,16 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

config

\n", - " stored full config file\n", - "
\n", - "

coordinates

\n", - " \n", - "
\n", - "

confidences

\n", - " \n", - "
\n", - "

bodyparts

\n", - " \n", - "
\n", - "

data

\n", - " \n", - "
\n", - "

metadata

\n", - " \n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id config coordinate confidence bodyparts data metadata \n", - "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "pca.PCATask.FormattedDataset()" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -1256,6 +1134,9 @@ "
\n", "

pca_fitting_time

\n", " Time of generation of the PCA fitting analysis\n", + "
\n", + "

pca

\n", + " \n", "
\n", " \n", " \n", @@ -1264,13 +1145,13 @@ " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", - "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti pca \n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +--------+\n", "\n", " (Total: 0)" ] }, - "execution_count": 26, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -1281,7 +1162,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1362,7 +1243,7 @@ " (Total: 0)" ] }, - "execution_count": 27, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1373,104 +1254,10 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

latent_dim

\n", - " \n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id *latent_dim \n", - "+---------+ +------------+ +----------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pca.UpdateLatentDimension()" - ] + "outputs": [], + "source": [] } ], "metadata": { From b468fd41a93f1e92174672721811c8d9adc10038 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 2 Jan 2024 08:35:28 +0100 Subject: [PATCH 27/90] WIP: restructure `model` schema --- element_moseq/model.py | 41 ++- notebooks/testing.ipynb | 580 ++++++++++++++++++++++++++++------------ 2 files changed, 448 insertions(+), 173 deletions(-) diff --git a/element_moseq/model.py b/element_moseq/model.py index 1af707c..f1f7589 100644 --- a/element_moseq/model.py +++ b/element_moseq/model.py @@ -122,30 +122,61 @@ class FittingParamSet(dj.Lookup): @schema -class Prefitting(dj.Computed): +class PreFittingTask(dj.Manual): definition = """ -> InitializationParamSet -> pca.PCAFitting --- model_name : varchar(20) + task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation """ - def make(self, key): @schema -class Prefitting(dj.Computed): +class PreFitting(dj.Computed): definition = """ - -> Initializing + -> PreFittingTask + --- + model : longblob """ + + def make(self, key): + # model = kpms.init_model(data, pca=pca, **config()) + # model = kpms.update_hypparams(model, kappa=kappa) + # model, model_name = kpms.fit_model(model, data, metadata, project_dir,ar_only=True, num_iters=num_ar_iters) return @schema -class FullFitting(dj.Computed): +class FullFittingTask(dj.Manual): definition = """ -> Prefitting -> FittingParamSet + --- + model_name : varchar(20) + task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation + """ + + +@schema +class FullFitting(dj.Computed): + definition = """ + -> FullFittingTask + --- + model : longblob """ def make(self, key): + # task_mode == "trigger" + # modify kappa to maintain the desired syllable time-scale + # model = kpms.update_hypparams(model, kappa=1e6) + + # run fitting for an additional 200 iters + # model = kpms.fit_model( + # model, data, metadata, project_dir, model_name, ar_only=False, + # start_iter=current_iter, num_iters=current_iter+500)[0] + # task_mode == "load" + # model_name = '2023_11_27-16_06_07' + # model, data, metadata, current_iter = kpms.load_checkpoint( + # project_dir, model_name, iteration=num_ar_iters) return diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index 2c9a5c8..eefd845 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -34,7 +34,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[2024-01-02 08:13:28,851][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + "[2024-01-02 08:32:38,675][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" ] } ], @@ -44,224 +44,252 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "model.InitializationParamSet\n", - "\n", - "\n", - "model.InitializationParamSet\n", + "pca.PCAFitting\n", + "\n", + "\n", + "pca.PCAFitting\n", "\n", "\n", "\n", - "\n", - "\n", - "model.Prefitting\n", - "\n", - "\n", - "model.Prefitting\n", + "\n", + "\n", + "pca.UpdateLatentDimension\n", + "\n", + "\n", + "pca.UpdateLatentDimension\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "model.InitializationParamSet->model.Prefitting\n", - "\n", - "\n", - "\n", - "\n", - "pca.LatentDimension\n", - "\n", - "\n", - "pca.LatentDimension\n", - "\n", - "\n", + "pca.PCAFitting->pca.UpdateLatentDimension\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.UpdateLatentDimension\n", - "\n", - "\n", - "pca.UpdateLatentDimension\n", + "model.PreFittingTask\n", + "\n", + "\n", + "model.PreFittingTask\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.LatentDimension->pca.UpdateLatentDimension\n", - "\n", + "pca.PCAFitting->model.PreFittingTask\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.Bodyparts\n", - "\n", - "\n", - "pca.Bodyparts\n", + "model.FullFitting\n", + "\n", + "\n", + "model.FullFitting\n", "\n", "\n", "\n", - "\n", - "\n", - "pca.PCATask\n", - "\n", - "\n", - "pca.PCATask\n", + "\n", + "\n", + "pca.LatentDimension\n", + "\n", + "\n", + "pca.LatentDimension\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.Bodyparts->pca.PCATask\n", - "\n", + "pca.LatentDimension->pca.UpdateLatentDimension\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet\n", - "\n", - "\n", - "pca.KeypointSet\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "pca.PCATask.FormattedDataset\n", "\n", "\n", "\n", - "\n", - "\n", - "pca.KeypointSet->pca.Bodyparts\n", - "\n", + "\n", + "\n", + "model.PreFitting\n", + "\n", + "\n", + "model.PreFitting\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet->pca.PCATask\n", - "\n", + "\n", + "\n", + "\n", + "model.PreFittingTask->model.PreFitting\n", + "\n", "\n", "\n", - "\n", + "\n", "pca.KeypointSet.VideoFiles\n", - "\n", - "\n", - "pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles\n", "\n", "\n", "\n", - "\n", - "\n", - "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", - "\n", + "\n", + "\n", + "pca.RecordingInfo\n", + "\n", + "\n", + "pca.RecordingInfo\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "model.InitializationParamSet\n", + "\n", + "\n", + "model.InitializationParamSet\n", "\n", "\n", "\n", - "\n", - "\n", - "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", - "\n", + "\n", + "\n", + "model.InitializationParamSet->model.PreFittingTask\n", + "\n", "\n", - "\n", - "\n", - "model.FullFitting\n", - "\n", - "\n", - "model.FullFitting\n", + "\n", + "\n", + "pca.KeypointSet\n", + "\n", + "\n", + "pca.KeypointSet\n", "\n", "\n", "\n", - "\n", - "\n", - "model.FittingParamSet\n", - "\n", - "\n", - "model.FittingParamSet\n", + "\n", + "\n", + "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "\n", + "\n", + "pca.Bodyparts\n", + "\n", + "\n", + "pca.Bodyparts\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "model.FittingParamSet->model.FullFitting\n", - "\n", + "pca.KeypointSet->pca.Bodyparts\n", + "\n", "\n", - "\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.PCATask->pca.UpdateLatentDimension\n", - "\n", + "pca.KeypointSet->pca.PCATask\n", + "\n", "\n", - "\n", - "\n", - "pca.PCAFitting\n", - "\n", - "\n", - "pca.PCAFitting\n", + "\n", + "\n", + "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "pca.KeypointSet.PoseEstimationMethod\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.PCATask->pca.PCAFitting\n", - "\n", + "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", + "\n", "\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", - "\n", + "\n", + "\n", + "pca.Bodyparts->pca.PCATask\n", + "\n", "\n", + "\n", + "\n", + "model.FullFittingTask\n", + "\n", + "\n", + "model.FullFittingTask\n", + "\n", "\n", - "\n", - "\n", - "pca.PCATask->pca.PCATask.FormattedDataset\n", - "\n", "\n", - "\n", + "\n", "\n", - "model.Prefitting->model.FullFitting\n", - "\n", + "model.PreFitting->model.FullFittingTask\n", + "\n", "\n", - "\n", - "\n", - "pca.RecordingInfo\n", - "\n", - "\n", - "pca.RecordingInfo\n", + "\n", + "\n", + "model.FittingParamSet\n", + "\n", + "\n", + "model.FittingParamSet\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.PCAFitting->pca.UpdateLatentDimension\n", - "\n", + "model.FittingParamSet->model.FullFittingTask\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.PCAFitting->model.Prefitting\n", - "\n", + "pca.PCATask->pca.PCAFitting\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", - "\n", + "pca.PCATask->pca.UpdateLatentDimension\n", + "\n", + "\n", + "\n", + "\n", + "pca.PCATask->pca.PCATask.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "model.FullFittingTask->model.FullFitting\n", + "\n", "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -272,7 +300,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -362,7 +390,7 @@ " (Total: 0)" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -373,7 +401,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -400,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -415,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -509,7 +537,7 @@ " (Total: 1)" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -520,7 +548,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -537,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -641,7 +669,7 @@ " (Total: 3)" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -652,7 +680,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -667,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -765,7 +793,7 @@ " (Total: 1)" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -776,7 +804,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -785,7 +813,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -881,7 +909,7 @@ " (Total: 0)" ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -892,7 +920,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -910,7 +938,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1003,18 +1031,18 @@ " (Total: 0)" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.PCATask()" + "pca.PCATask()\n" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -1026,7 +1054,116 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Manual table for defining a data loading task ready to be run\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

project_path

\n", + " KPMS's project_path in config relative to root\n", + "
\n", + "

task_mode

\n", + " 'load': load computed analysis results, 'trigger': trigger computation\n", + "
subject12021-06-02 14:04:2211/kpms_projectload
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", + "subject1 2021-06-02 14: 1 1 /kpms_project load \n", + " (Total: 1)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pca.PCATask()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1036,7 +1173,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[22], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", + "Cell \u001b[0;32mIn[25], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", "File \u001b[0;32m~/Documents/datajoint-elements/element-moseq/element_moseq/pca.py:264\u001b[0m, in \u001b[0;36mPCATask.generate\u001b[0;34m(cls, key)\u001b[0m\n\u001b[1;32m 261\u001b[0m video_path \u001b[39m=\u001b[39m (KeypointSet\u001b[39m.\u001b[39mVideoFiles \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch(\u001b[39m\"\u001b[39m\u001b[39mvideo_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 263\u001b[0m kpset_path \u001b[39m=\u001b[39m (KeypointSet \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch1(\u001b[39m\"\u001b[39m\u001b[39mkpset_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 264\u001b[0m kpset_path \u001b[39m=\u001b[39m find_full_path(get_kpms_root_data_dir(), kpset_path)\n\u001b[1;32m 266\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mkeypoint_moseq\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mkpms\u001b[39;00m\n\u001b[1;32m 268\u001b[0m \u001b[39m# define config file for kpms with anonymous function\u001b[39;00m\n", "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/element_interface/utils.py:42\u001b[0m, in \u001b[0;36mfind_full_path\u001b[0;34m(root_directories, relative_path)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[39mif\u001b[39;00m (_to_Path(root_dir) \u001b[39m/\u001b[39m relative_path)\u001b[39m.\u001b[39mexists():\n\u001b[1;32m 40\u001b[0m \u001b[39mreturn\u001b[39;00m _to_Path(root_dir) \u001b[39m/\u001b[39m relative_path\n\u001b[0;32m---> 42\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mFileNotFoundError\u001b[39;00m(\n\u001b[1;32m 43\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mNo valid full-path found (from \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 44\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m for \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(root_directories, relative_path)\n\u001b[1;32m 45\u001b[0m )\n", "\u001b[0;31mFileNotFoundError\u001b[0m: No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos" @@ -1049,16 +1186,123 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

config

\n", + " stored full config file\n", + "
\n", + "

coordinates

\n", + " \n", + "
\n", + "

confidences

\n", + " \n", + "
\n", + "

bodyparts

\n", + " \n", + "
\n", + "

data

\n", + " \n", + "
\n", + "

metadata

\n", + " \n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id config coordinate confidence bodyparts data metadata \n", + "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pca.PCATask.FormattedDataset()" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1151,7 +1395,7 @@ " (Total: 0)" ] }, - "execution_count": 23, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1162,7 +1406,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -1243,7 +1487,7 @@ " (Total: 0)" ] }, - "execution_count": 24, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } From 4eba5667b8fe8226e3ae9b363e7512760db6794f Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 8 Jan 2024 12:56:19 +0100 Subject: [PATCH 28/90] test element-moseq[elements] in codespaces --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 6c8df97..1b55788 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,7 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install -y gcc ffmpeg graphviz && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements,kpms_default] && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean From fe6be5474ca308654365e5e241fc65945dcb9c02 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 8 Jan 2024 12:58:06 +0100 Subject: [PATCH 29/90] test element-moseq[elements] in codespaces --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 6c8df97..1b55788 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,7 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install -y gcc ffmpeg graphviz && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements,kpms_default] && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean From 1b2362de923ab5de1feec99742b4ea2d0e14455a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 8 Jan 2024 13:09:05 +0100 Subject: [PATCH 30/90] test modif dockerfile in codespaces --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 1b55788..50113ab 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -32,7 +32,7 @@ COPY ./ /tmp/element-moseq/ RUN \ # pipeline dependencies apt-get update && \ - apt-get install -y gcc ffmpeg graphviz && \ + apt-get install gcc g++ ffmpeg libsm6 libxext6 -y && \ pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ From 848b8897f8662b5b04d2ff96ceee13ca7edb12cb Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Mon, 8 Jan 2024 16:12:51 +0100 Subject: [PATCH 31/90] test codespaces --- .devcontainer/Dockerfile | 2 +- setup.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 50113ab..a643a53 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -32,7 +32,7 @@ COPY ./ /tmp/element-moseq/ RUN \ # pipeline dependencies apt-get update && \ - apt-get install gcc g++ ffmpeg libsm6 libxext6 -y && \ + apt-get install gcc g++ ffmpeg -y && \ pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ diff --git a/setup.py b/setup.py index 00248fc..5205dd2 100644 --- a/setup.py +++ b/setup.py @@ -28,8 +28,6 @@ install_requires=["datajoint>=0.13.0", "ipykernel>=6.0.1", "ipywidgets"], extras_require={ "kpms_default": [ - "ffmpeg", - "tensorflow==2.12.0", "'jax[cuda]==0.4.1' -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html", "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq", ], From 4b71c99cf0b3adf14646e01ffc4680360a0e7565 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 26 Jan 2024 21:00:16 +0100 Subject: [PATCH 32/90] fixed import keypoint-moseq in ipython codespace --- .devcontainer/Dockerfile | 3 ++- setup.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a643a53..e74176f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -33,7 +33,8 @@ RUN \ # pipeline dependencies apt-get update && \ apt-get install gcc g++ ffmpeg -y && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ + pip install "jax[cpu]==0.3.22" -f https://storage.googleapis.com/jax-releases/jax_releases.html && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements,kpms_default] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean diff --git a/setup.py b/setup.py index 5205dd2..6422765 100644 --- a/setup.py +++ b/setup.py @@ -25,11 +25,11 @@ keywords="neuroscience keypoint-moseq science datajoint", packages=find_packages(exclude=["contrib", "docs", "tests*"]), scripts=[], - install_requires=["datajoint>=0.13.0", "ipykernel>=6.0.1", "ipywidgets"], + install_requires=["datajoint>=0.13.0"], extras_require={ "kpms_default": [ - "'jax[cuda]==0.4.1' -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html", - "keypoint-moseq @ git+https://github.com/dattalab/keypoint-moseq", + "panel==1.3.4", + "keypoint-moseq", ], "elements": [ "element-lab>=0.3.0", From e55b69d3edff660eca8fcdc9073c3adf46087775 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 9 Feb 2024 03:50:50 +0100 Subject: [PATCH 33/90] fix RecordingInfo.populate() --- element_moseq/pca.py | 54 +++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/element_moseq/pca.py b/element_moseq/pca.py index 624da9b..c83137e 100644 --- a/element_moseq/pca.py +++ b/element_moseq/pca.py @@ -164,35 +164,37 @@ def key_source(self): def make(self, key): """Populates table with video metadata using CV2.""" - file_path = (KeypointSet.VideoFiles & key).fetch1("video_path") + file_paths,video_ids = (KeypointSet.VideoFiles & key).fetch("video_path","video_id") - nframes = 0 - px_height, px_width, fps = None, None, None + for fp, video_id in zip(file_paths,video_ids): + nframes = 0 + px_height, px_width, fps = None, None, None - file_path = (find_full_path(get_kpms_root_data_dir(), file_path[0])).as_posix() + file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() - cap = cv2.VideoCapture(file_path) - info = ( - int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), - int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), - int(cap.get(cv2.CAP_PROP_FPS)), - ) - if px_height is not None: - assert (px_height, px_width, fps) == info - px_height, px_width, fps = info - nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) - cap.release() - - self.insert1( - { - **key, - "px_height": px_height, - "px_width": px_width, - "nframes": nframes, - "fps": fps, - "recording_duration": nframes / fps, - } - ) + cap = cv2.VideoCapture(file_path) + info = ( + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), + int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FPS)), + ) + if px_height is not None: + assert (px_height, px_width, fps) == info + px_height, px_width, fps = info + nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + cap.release() + + self.insert1( + { + **key, + "video_id": video_id, + "px_height": px_height, + "px_width": px_width, + "nframes": nframes, + "fps": fps, + "recording_duration": nframes / fps, + } + ) @schema From 9f41acece8761c35b0dce94ef069340177e43060 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 28 Feb 2024 02:53:23 +0100 Subject: [PATCH 34/90] readers WIP --- element_moseq/readers/kpms_reader.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 element_moseq/readers/kpms_reader.py diff --git a/element_moseq/readers/kpms_reader.py b/element_moseq/readers/kpms_reader.py new file mode 100644 index 0000000..d38b332 --- /dev/null +++ b/element_moseq/readers/kpms_reader.py @@ -0,0 +1,26 @@ +import re +import logging +import numpy as np +import pandas as pd +from pathlib import Path +import pickle +from ruamel.yaml import YAML +from element_interface.utils import find_root_directory, dict_to_uuid +from .. import model +from ..model import get_dlc_root_data_dir +from datajoint.errors import DataJointError + +logger = logging.getLogger("datajoint") + +# def read_yaml(fullpath: str, filename: str = '*') -> tuple: +# """ Return contents of yaml in fullpath. If available, defer to DJ-saved version + +# Args: +# fullpath (str): String or pathlib path. Directory with yaml files +# filename (str, optional): Filename, no extension. + +# Returns: +# Tuple of (a) filepath as pathlib.PosixPath and (b) file contents as dict +# """ + + \ No newline at end of file From ba85e310c568ce96e5742e24978739d0a7cfe765 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 28 Feb 2024 02:54:27 +0100 Subject: [PATCH 35/90] from `model.py` to `kpms_model.py` [WIP] --- element_moseq/{model.py => kpms_model.py} | 44 +++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) rename element_moseq/{model.py => kpms_model.py} (83%) diff --git a/element_moseq/model.py b/element_moseq/kpms_model.py similarity index 83% rename from element_moseq/model.py rename to element_moseq/kpms_model.py index f1f7589..6dfe9f7 100644 --- a/element_moseq/model.py +++ b/element_moseq/kpms_model.py @@ -158,25 +158,25 @@ class FullFittingTask(dj.Manual): """ -@schema -class FullFitting(dj.Computed): - definition = """ - -> FullFittingTask - --- - model : longblob - """ - - def make(self, key): - # task_mode == "trigger" - # modify kappa to maintain the desired syllable time-scale - # model = kpms.update_hypparams(model, kappa=1e6) - - # run fitting for an additional 200 iters - # model = kpms.fit_model( - # model, data, metadata, project_dir, model_name, ar_only=False, - # start_iter=current_iter, num_iters=current_iter+500)[0] - # task_mode == "load" - # model_name = '2023_11_27-16_06_07' - # model, data, metadata, current_iter = kpms.load_checkpoint( - # project_dir, model_name, iteration=num_ar_iters) - return +# @schema +# class FullFitting(dj.Computed): +# definition = """ +# -> FullFittingTask +# --- +# model : longblob +# """ + +# def make(self, key): +# task_mode == "trigger" +# modify kappa to maintain the desired syllable time-scale +# model = kpms.update_hypparams(model, kappa=1e6) + +# run fitting for an additional 200 iters +# model = kpms.fit_model( +# model, data, metadata, project_dir, model_name, ar_only=False, +# start_iter=current_iter, num_iters=current_iter+500)[0] +# task_mode == "load" +# model_name = '2023_11_27-16_06_07' +# model, data, metadata, current_iter = kpms.load_checkpoint( +# project_dir, model_name, iteration=num_ar_iters) +# return From a675c580eab1e51b55f3594ba9d5136ff4bb9adb Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 28 Feb 2024 03:05:25 +0100 Subject: [PATCH 36/90] from `pca.py` to `kpms_pca.py` [WIP] --- element_moseq/kpms_pca.py | 510 ++++++++++++++++++++++++++++++++++++++ element_moseq/pca.py | 378 ---------------------------- 2 files changed, 510 insertions(+), 378 deletions(-) create mode 100644 element_moseq/kpms_pca.py delete mode 100644 element_moseq/pca.py diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py new file mode 100644 index 0000000..97a68a3 --- /dev/null +++ b/element_moseq/kpms_pca.py @@ -0,0 +1,510 @@ +import datajoint as dj +import matplotlib.pyplot as plt +import cv2 +from typing import Optional +import numpy as np +from datetime import datetime + +import inspect +import importlib +import os +from pathlib import Path +from element_interface.utils import find_full_path, dict_to_uuid + +schema = dj.schema() +_linking_module = None + + +def activate( + pca_schema_name: str, + *, + create_schema: bool = True, + create_tables: bool = True, + linking_module: str = None, +): + """Activate this schema. + + Args: + pca_schema_name (str): A string containing the name of the pca schema. + create_schema (bool): If True (default), schema will be created in the database. + create_tables (bool): If True (default), tables related to the schema will be created in the database. + linking_module (str): A string containing the module name or module containing the required dependencies to activate the schema. + + Dependencies: + Functions: + get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) with all behavioral recordings, as (list of) string(s) + get_kpms_processed_data_dir(): Optional. Returns absolute path for processed data. Defaults to session video subfolder. + """ + + if isinstance(linking_module, str): + linking_module = importlib.import_module(linking_module) + assert inspect.ismodule( + linking_module + ), "The argument 'dependency' must be a module's name or a module" + + assert hasattr( + linking_module, "get_kpms_root_data_dir" + ), "The linking module must specify a lookup function for a root data directory" + + global _linking_module + _linking_module = linking_module + + # activate + schema.activate( + pca_schema_name, + create_schema=create_schema, + create_tables=create_tables, + add_objects=_linking_module.__dict__, + ) + + +# -------------- Functions required by the element-moseq --------------- + + +def get_kpms_root_data_dir() -> list: + """Pulls relevant func from parent namespace to specify root data dir(s). + + It is recommended that all paths in DataJoint Elements stored as relative + paths, with respect to some user-configured "root" director(y/ies). The + root(s) may vary between data modalities and user machines. Returns a full path + string or list of strings for possible root data directories. + """ + root_directories = _linking_module.get_kpms_root_data_dir() + if isinstance(root_directories, (str, Path)): + root_directories = [root_directories] + + if ( + hasattr(_linking_module, "get_kpms_processed_data_dir") + and get_kpms_processed_data_dir() not in root_directories + ): + root_directories.append(_linking_module.get_kpms_processed_data_dir()) + + return root_directories + + +def get_kpms_processed_data_dir() -> Optional[str]: + """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. + + Method in parent namespace should provide a string to a directory where KPMS output + files will be stored. If unspecified, output files will be stored in the + session directory 'videos' folder, per DeepLabCut default. + """ + if hasattr(_linking_module, "get_kpms_processed_data_dir"): + return _linking_module.get_kpms_processed_data_dir() + else: + return None + + +# ----------------------------- Table declarations ---------------------- + +@schema +class PoseEstimationMethod(dj.Lookup): + """Table for storing the pose estimation method used to obtain the keypoints data. + + Attributes: + format (str) : Pose estimation method. + pose_estimation_desc (str) : Pose estimation method description. + """ + + definition = """ + # Parameters used to obtain the keypoints data based on a specific pose estimation method. + format : char(15) # deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap, + --- + pose_estimation_desc : varchar(1000) # Optional. Pose estimation method description + """ + + contents = [ + ["deeplabcut", "`.csv` and `.h5/.hdf5` files generated by DeepLabcut analysis"], + ["sleap", "`.slp` and `.h5/.hdf5` files generated by SLEAP analysis"], + ["anipose", "`.csv` files generated by anipose analysis"], + ["sleap-anipose", "`.h5/.hdf5` files generated by sleap-anipose analysis"], + ["nwb", "`.nwb` files with Neurodata Without Borders (NWB) format"], + ["facemap", "`.h5` files generated by Facemap analysis"], + ] + + +@schema +class KeypointSet(dj.Manual): + """Table for storing the keypoint sets and their associated videos. + + Attributes: + kpset_id (int): Unique ID for each keypoint set. + kpset_config_path (str): Path relative to root data directory where the config file is located. + kpset_videos_path (str): Path relative to root data directory where the videos and their keypoints are located. + kpset_description (str): Optional. User-entered description. + """ + + definition = """ + -> Session + kpset_id : int + --- + kpset_method : varchar(15) # deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap + kpset_config_path : varchar(255) # Path relative to root data directory where the config file is located + kpset_videos_path : varchar(255) # Path relative to root data directory where the videos and their keypoints are located + kpset_description='' : varchar(300) # Optional. User-entered description + + """ + + class VideoFiles(dj.Part): + """IDs and file paths of each video file. + + Atribbutes: + video_id (int): Unique ID for each video. + video_path (str): Filepath of each video, relative to root data directory. + """ + + definition = """ + -> master + video_id : int + --- + video_path : varchar(255) # Filepath of each video, relative to root data directory + """ + + +@schema +class RecordingInfo(dj.Imported): + """Automated table to store video metadata. + + Attributes: + KeypointSet.VideoFiles (foreign key) : Unique ID for each video. + px_height (smallint) : Height in pixels. + px_width (smallint) : Width in pixels. + nframes (int) : Number of frames. + fps (int) : Optional. Frames per second, Hz. + recording_datetime (datetime) : Optional. Datetime for the start of recording. + recording_duration (float) : Video duration (s) from nframes / fps. + """ + + definition = """ + -> KeypointSet.VideoFiles + --- + px_height : smallint # Height in pixels + px_width : smallint # Width in pixels + nframes : int # Number of frames + fps = NULL : int # Optional. Frames per second, Hz + recording_datetime = NULL : datetime # Optional. Datetime for the start of the recording + recording_duration : float # Video duration (s) from nframes / fps + """ + + @property + def key_source(self): + """Defines order of keys for the make function when called via `populate()`""" + return KeypointSet & KeypointSet.VideoFiles + + def make(self, key): + """ + Make function to populate the RecordingInfo table. + + Args: + key (dict): Primary key from the RecordingInfo table. + + Returns: + dict: Primary key and attributes for the RecordingInfo table. + + Raises: + High-Level Logic: + 1. Fetches the file paths and video IDs from the KeypointSet.VideoFiles table. + 2. Iterates through the file paths and video IDs to obtain the video metadata using OpenCV. + 3. Inserts the video metadata into the RecordingInfo table. + + """ + + file_paths, video_ids = (KeypointSet.VideoFiles & key).fetch( + "video_path", "video_id" + ) + + for fp, video_id in zip(file_paths, video_ids): + nframes = 0 + px_height, px_width, fps = None, None, None + + file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() + + cap = cv2.VideoCapture(file_path) + info = ( + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), + int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FPS)), + ) + if px_height is not None: + assert (px_height, px_width, fps) == info + px_height, px_width, fps = info + nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + cap.release() + + self.insert1( + { + **key, + "video_id": video_id, + "px_height": px_height, + "px_width": px_width, + "nframes": nframes, + "fps": fps, + "recording_duration": nframes / fps, + } + ) + + +@schema +class Bodyparts(dj.Manual): + """Table for storing the bodyparts used in the analysis. + + Attributes: + KeypointSet (foreign key) : Unique ID for each keypoint set. + bodyparts_id (int) : Unique ID for each bodypart. + anterior_bodyparts (longblob) : List of strings of anterior bodyparts + posterior_bodyparts (longblob) : List of strings of posterior bodyparts + use_bodyparts (longblob) : List of strings of bodyparts to be used + """ + + definition = """ + -> KeypointSet + bodyparts_id : int + --- + anterior_bodyparts : blob # List of strings of anterior bodyparts + posterior_bodyparts : blob # List of strings of posterior bodyparts + use_bodyparts : blob # List of strings of bodyparts to be used + """ + + +@schema +class PCATask(dj.Manual): + """ + Table to define the PCA task. + + Attributes: + KeypointSet (foreign key) : Unique ID for each keypoint set. + Bodyparts (foreign key) : Unique ID for each bodypart. + pca_task_id (int) : Unique ID for each PCA task. + project_path (str) : KPMS's project_path in config relative to root + task_mode (str) : 'load': load computed analysis results, 'trigger': trigger computation + """ + + definition = """ + -> KeypointSet + -> Bodyparts + pca_task_id: int + --- + project_path='' : varchar(255) # KPMS's project_path in config relative to root + task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation + """ + +@schema +class FormattedDataset(dj.Imported): + """ + Table for storing the formatted dataset. + """ + + definition = """ + -> PCATask + --- + config : longblob # stored full config file + coordinates : longblob + confidences : longblob + bodyparts : longblob + data : longblob + metadata : longblob + """ + + def make(self, key): + """ + Make function to format keypoint coordinates and confidences for inference. + + Args: + key (dict): Primary key from the PCATask table. + + Returns: + dict: Primary key and attributes for the PCATask table. + + Raises: + + High-Level Logic: + + """ + + anterior_bodyparts, posterior_bodyparts, use_bodyparts = ( + Bodyparts & key + ).fetch1( + "anterior_bodyparts", + "posterior_bodyparts", + "use_bodyparts", + ) + project_path = (PCATask & key).fetch1("project_path") + task_mode = (PCATask & key).fetch1("task_mode") + method = (KeypointSet & key).fetch1("kpset_method") + format = (PoseEstimationMethod & {'format':method}).fetch1("format") + kpset_config_path, kpset_videos_path = (KeypointSet & key).fetch1("kpset_config_path","kpset_videos_path") + + from keypoint_moseq import (setup_project, + load_config, + check_config_validity, + update_config, + load_keypoints, + format_data) + + if task_mode == "trigger": + config = setup_project( + project_path, deeplabcut_config=kpset_config_path + ) # setup a project directory for deeplabcut, sleap or nwb config, and generate a `config.yml` file with project settings. Overwrite by default is false. If the project dir already exists, pick a different project dir name. + + + # TO-DO: Here there should be the creation of a DJ_config file to update the new bodyparts + elif task_mode == "load": + config_kwargs_dict = dict( + video_dir = kpset_videos_path, + anterior_bodyparts = anterior_bodyparts, + posterior_bodyparts = posterior_bodyparts, + use_bodyparts = use_bodyparts) + + ## The following function `update_config` does the following: (1) config = load_config(...), (2) config.update(kwargs), (3) generate_config(project_dir, **config) + update_config( + project_path, + **config_kwargs_dict + ) + + # To check load_config, this is the function: + # check_if_valid = True + # build_indexes = True + # config_path = os.path.join(project_path, "config.yml") + + ## Proposal: Instead of updating the new bodyparts in the original kpms_config file, the previous function will be splitted to create a new config file instead named `dj_config.yml` with the new bodyparts + # config=load_config(project_path, check_if_valid=False, build_indexes=False) + # config.update(config_kwargs_dict) + # generate a new config file, not overwriting the original config file + + + # load data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap + coordinates, confidences, bodyparts = load_keypoints( + filepath_pattern=kpset_videos_path, format=format + ) + + # coordinates: dict + # Dictionary mapping filenames to keypoint coordinates as ndarrays of + # shape (n_frames, n_bodyparts, 2[or 3]) + + # confidences: dict + # Dictionary mapping filenames to `likelihood` scores as ndarrays of + # shape (n_frames, n_bodyparts) + + # bodyparts: list of str + # List of bodypart names. The order of the names matches the order of the + # bodyparts in `coordinates` and `confidences`. + + # formatted_bodyparts is not necessarily the same as use_bodyparts + + + + # format data for modeling + # Data are transformed as follows: + # 1. Coordinates and confidences are each merged into a single array + # using :py:func:`keypoint_moseq.util.batch`. Each row of the merged + # arrays is a segment from one recording. + # 2. The keypoints axis is reindexed according to the order of elements + # in `use_bodyparts` with respect to their initial orer in + # `bodyparts`. + # 3. Uniform noise proportional to `added_noise_level` is added to the + # keypoint coordinates to prevent degenerate solutions during fitting. + # 4. Keypoint confidences are augmented by `conf_pseudocount`. + # 5. Wherever NaNs occur in the coordinates, they are replaced by values + # imputed using linear interpolation, and the corresponding + # confidences are set to `conf_pseudocount`. + + # TO-DO: fix issue with the config["anterior_idxs"] since they are iterated as characters, not words, and rise an error: ` 'n' is not in list` + data, metadata = format_data( + **config, coordinates=coordinates, confidences=confidences + ) + # data: dict with the following items + # Y: jax array with shape (n_segs, seg_length, K, D) + # Keypoint coordinates from all recordings broken into fixed-length segments. + + # conf: jax array with shape (n_segs, seg_length, K) + # Confidences from all recordings broken into fixed-length segments. If no input is provided for confidences, then data["conf"]=None. + + # mask: jax array with shape (n_segs, seg_length) + # Binary array where 0 indicates areas of padding + # (see keypoint_moseq.util.batch). + + # metadata: tuple (keys, bounds) + # Metadata for the rows of Y, conf and mask, as a tuple with a array of recording names and an array of (start,end) times. See + # jax_moseq.utils.batch for details. + + + # TO-DO: store data and metadata in files (Not allowed to store this jax data type as longblob in the table) + + self.FormattedDataset.insert1( + dict( + **key, + config=config, + coordinates=coordinates, + confidences=confidences, + bodyparts=bodyparts, + # data=data, -----> should be saved as a file + # metadata=metadata,-----> should be saved as a file + ) + ) + + +@schema +class PCAFitting(dj.Computed): + definition = """ + -> FormattedDataset + pca_fitting_id : int + --- + pca_fitting_time : datetime # Time of generation of the PCA fitting analysis + pca : longblob + """ + + def make(self, key): + from keypoint_moseq import ( + load_pca, + fit_pca, + save_pca, + print_dims_to_explain_variance, + plot_scree, + plot_pcs, + ) + + task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") + config = (PCATask.FormattedDataset & key).fetch1( "config") + + # data = ---> Load data from the file saved in the previous table + + project_path = find_full_path(get_kpms_root_data_dir(), project_path) + + if task_mode == "load": + pca = load_pca(**data, **config()) + + elif task_mode == "trigger": + pca = fit_pca(**data, **config()) + save_pca(pca, project_path) + creation_time = datetime.strftime("%Y-%m-%d %H:%M:%S") + + print_dims_to_explain_variance(pca, 0.9) + plot_scree(pca, project_dir=project_path) + plot_pcs(pca, project_dir=project_path, **config()) + + self.insert1(**key, pca_fitting_time=creation_time, pca=pca) + + +@schema +class LatentDimension(dj.Lookup): + definition = """ + latent_dim : int + --- + latent_dim_description='' : varchar(1000) + """ + + +@schema +class UpdateLatentDimension(dj.Computed): + definition = """ + -> PCAFitting + -> LatentDimension + """ + + def make(self, key): + # update latent_dim in config_file + from keypoint_moseq import update_config + + project_path = (PCATask & key).fetch1("project_path") + latent_dim = (LatentDimension & key).fetch1("latent_dim") + update_config(project_path, latent_dim=latent_dim) diff --git a/element_moseq/pca.py b/element_moseq/pca.py deleted file mode 100644 index c83137e..0000000 --- a/element_moseq/pca.py +++ /dev/null @@ -1,378 +0,0 @@ -import datajoint as dj -import matplotlib.pyplot as plt -import cv2 -from typing import Optional -import numpy as np -from datetime import datetime - -import inspect -import importlib -import os -from pathlib import Path -from element_interface.utils import find_full_path, dict_to_uuid - -schema = dj.schema() -_linking_module = None - - -def activate( - pca_schema_name: str, - *, - create_schema: bool = True, - create_tables: bool = True, - linking_module: str = None, -): - """Activate this schema. - - Args: - pca_schema_name (str): schema name on the database server - create_schema (bool): when True (default), create schema in the database if it - does not yet exist. - create_tables (bool): when True (default), create schema tables in the database - if they do not yet exist. - linking_module (str): a module (or name) containing the required dependencies. - - Dependencies: - Functions: - get_kpms_root_data_dir(): Returns absolute path for root data director(y/ies) - with all behavioral recordings, as (list of) string(s). - get_kpms_processed_data_dir(): Optional. Returns absolute path for processed - data. Defaults to session video subfolder. - """ - - if isinstance(linking_module, str): - linking_module = importlib.import_module(linking_module) - assert inspect.ismodule( - linking_module - ), "The argument 'dependency' must be a module's name or a module" - assert hasattr( - linking_module, "get_kpms_root_data_dir" - ), "The linking module must specify a lookup function for a root data directory" - - global _linking_module - _linking_module = linking_module - - # activate - schema.activate( - pca_schema_name, - create_schema=create_schema, - create_tables=create_tables, - add_objects=_linking_module.__dict__, - ) - - -# -------------- Functions required by element-moseq --------------- - - -def get_kpms_root_data_dir() -> list: - """Pulls relevant func from parent namespace to specify root data dir(s). - - It is recommended that all paths in DataJoint Elements stored as relative - paths, with respect to some user-configured "root" director(y/ies). The - root(s) may vary between data modalities and user machines. Returns a full path - string or list of strings for possible root data directories. - """ - root_directories = _linking_module.get_kpms_root_data_dir() - if isinstance(root_directories, (str, Path)): - root_directories = [root_directories] - - if ( - hasattr(_linking_module, "get_kpms_processed_data_dir") - and get_kpms_processed_data_dir() not in root_directories - ): - root_directories.append(_linking_module.get_kpms_processed_data_dir()) - - return root_directories - - -def get_kpms_processed_data_dir() -> Optional[str]: - """Pulls relevant func from parent namespace. Defaults to KPMS's project /videos/. - - Method in parent namespace should provide a string to a directory where KPMS output - files will be stored. If unspecified, output files will be stored in the - session directory 'videos' folder, per DeepLabCut default. - """ - if hasattr(_linking_module, "get_kpms_processed_data_dir"): - return _linking_module.get_kpms_processed_data_dir() - else: - return None - - -# ----------------------------- Table declarations ---------------------- - - -@schema -class KeypointSet(dj.Manual): - definition = """ - -> Session - kpset_id : int - --- - kpset_path : varchar(255) #Path relative to root data directory where the videos and their keypoints are located. - kpset_description='' : varchar(300) # Optional. User-entered description. - - """ - - class VideoFiles(dj.Part): - """IDs and file paths of each video file.""" - - definition = """ - -> master - video_id : int - --- - video_path : varchar(255) # Filepath of each video, relative to root data directory - """ - - class PoseEstimationMethod(dj.Part): - definition = """ - # Parameters used to obtain the keypoints data based on a specific pose estimation method - -> master - --- - format : varchar(20) # deeplabcut, sleap - extension : varchar(20) # h5, csv - -> Device - """ - - -@schema -class RecordingInfo(dj.Imported): - """Automated table with video file metadata. - - Attributes: - px_height (smallint): Height in pixels. - px_width (smallint): Width in pixels. - nframes (int): Number of frames. - fps (int): Optional. Frames per second, Hz. - recording_datetime (datetime): Optional. Datetime for the start of recording. - recording_duration (float): video duration (s) from nframes / fps.""" - - definition = """ - -> KeypointSet.VideoFiles - --- - px_height : smallint # height in pixels - px_width : smallint # width in pixels - nframes : int # number of frames - fps = NULL : int # (Hz) frames per second - recording_datetime = NULL : datetime # Datetime for the start of the recording - recording_duration : float # video duration (s) from nframes / fps - """ - - @property - def key_source(self): - """Defines order of keys for make function when called via `populate()`""" - return KeypointSet & KeypointSet.VideoFiles - - def make(self, key): - """Populates table with video metadata using CV2.""" - - file_paths,video_ids = (KeypointSet.VideoFiles & key).fetch("video_path","video_id") - - for fp, video_id in zip(file_paths,video_ids): - nframes = 0 - px_height, px_width, fps = None, None, None - - file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() - - cap = cv2.VideoCapture(file_path) - info = ( - int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), - int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), - int(cap.get(cv2.CAP_PROP_FPS)), - ) - if px_height is not None: - assert (px_height, px_width, fps) == info - px_height, px_width, fps = info - nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) - cap.release() - - self.insert1( - { - **key, - "video_id": video_id, - "px_height": px_height, - "px_width": px_width, - "nframes": nframes, - "fps": fps, - "recording_duration": nframes / fps, - } - ) - - -@schema -class Bodyparts(dj.Manual): - """Body parts to use in the model - - Attributes: - anterior_bodyparts(longblob): list of strings of anterior bodyparts - posterior_bodyparts(longblob): list of strings of posterior bodyparts - use_bodyparts(longblob): list of strings of bodyparts to be used - """ - - definition = """ - -> KeypointSet - bodyparts_id : int - --- - anterior_bodyparts : blob # list of strings of anterior bodyparts - posterior_bodyparts : blob # list of strings of posterior bodyparts - use_bodyparts : blob # list of strings of bodyparts to be used - """ - - -@schema -class PCATask(dj.Manual): - definition = """# Manual table for defining a data loading task ready to be run - -> KeypointSet - -> Bodyparts - --- - project_path='' : varchar(255) # KPMS's project_path in config relative to root - task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation - """ - - class FormattedDataset(dj.Part): - definition = """ - -> master - --- - config : longblob # stored full config file - coordinates : longblob - confidences : longblob - bodyparts : longblob - data : longblob - metadata : longblob - """ - - @classmethod - def generate(cls, key): - # kpms bodyparts - anterior_bodyparts, posterior_bodyparts, use_bodyparts = ( - Bodyparts & key - ).fetch1( - "anterior_bodyparts", - "posterior_bodyparts", - "use_bodyparts", - ) - - # kpms project path - project_path = get_kpms_root_data_dir() - - task_mode = (PCATask & key).fetch1("task_mode") - - # pose estimation params - format, extension = (KeypointSet.PoseEstimationMethod & key).fetch1( - "format", "extension" - ) - - video_path = (KeypointSet.VideoFiles & key).fetch("video_path") - - kpset_path = (KeypointSet & key).fetch1("kpset_path") - kpset_path = find_full_path(get_kpms_root_data_dir(), kpset_path) - - import keypoint_moseq as kpms - - # define config file for kpms with anonymous function - kpms_config = lambda: kpms.load_config(project_path) - - # setup kpms project, create a new project dir and config.yml - if task_mode == "trigger": - if format == "deeplabcut": - kpms.setup_project( - project_path, deeplabcut_config=kpset_path.as_posix() - ) - else: - kpms.setup_project(project_path) - - # elif task_mode == "load": - - # update kpms config file - kpms.update_config( - project_path, - video_dir=video_path, - anterior_bodyparts=anterior_bodyparts, - posterior_bodyparts=posterior_bodyparts, - use_bodyparts=use_bodyparts, - ) - - # load data (e.g. from DeepLabCut) - coordinates, confidences, bodyparts = kpms.load_keypoints( - filepath_pattern=video_path, format=format, extension=extension - ) - - # format data for modeling - data, metadata = kpms.format_data(coordinates, confidences, **kpms_config()) - - cls.insert1( - dict( - **key, - config=kpms_config(), - coordinates=coordinates, - confidences=confidences, - bodyparts=bodyparts, - data=data, - metadata=metadata, - ) - ) - - auto_generate_entries = generate - - -@schema -class PCAFitting(dj.Computed): - definition = """ - -> PCATask - --- - pca_fitting_time : datetime # Time of generation of the PCA fitting analysis - pca : longblob - """ - - def make(self, key): - from keypoint_moseq import ( - load_pca, - fit_pca, - save_pca, - print_dims_to_explain_variance, - plot_scree, - plot_pcs, - ) - - task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") - data, config = (PCATask.FormattedDataset & key).fetch1("data", "config") - - project_path = find_full_path(get_kpms_root_data_dir(), project_path) - - if task_mode == "load": - pca = load_pca(**data, **config()) - - elif task_mode == "trigger": - pca = fit_pca(**data, **config()) - save_pca(pca, project_path) - creation_time = datetime.strftime("%Y-%m-%d %H:%M:%S") - - print_dims_to_explain_variance(pca, 0.9) - plot_scree(pca, project_dir=project_path) - plot_pcs(pca, project_dir=project_path, **config()) - - self.insert1(**key, pca_fitting_time=creation_time, pca=pca) - - -@schema -class LatentDimension(dj.Lookup): - definition = """ - latent_dim : int - --- - latent_dim_description='' : varchar(1000) - """ - - -@schema -class UpdateLatentDimension(dj.Computed): - definition = """ - -> PCAFitting - -> PCATask - -> LatentDimension - """ - - def make(self, key): - # update latent_dim in config_file - from keypoint_moseq import update_config - - project_path = (PCATask & key).fetch1("project_path") - latent_dim = (LatentDimension & key).fetch1("latent_dim") - update_config(project_path, latent_dim=latent_dim) From 8af783ab94046303b8681359480ed50b04c7bd39 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 28 Feb 2024 03:06:20 +0100 Subject: [PATCH 37/90] update `tutorial_pipeline.py` w new schema names --- notebooks/tutorial_pipeline.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notebooks/tutorial_pipeline.py b/notebooks/tutorial_pipeline.py index aa48271..0ffc7af 100644 --- a/notebooks/tutorial_pipeline.py +++ b/notebooks/tutorial_pipeline.py @@ -4,7 +4,7 @@ from element_animal import subject from element_session import session_with_datetime as session -from element_moseq import pca, model +from element_moseq import kpms_pca, kpms_model from element_animal.subject import Subject from element_lab.lab import Source, Lab, Protocol, User, Project @@ -91,5 +91,5 @@ class Device(dj.Lookup): # Activate Keypoint-MoSeq schema ----------------------------------- -pca.activate(db_prefix + "pca", linking_module=__name__) -model.activate(db_prefix + "model", linking_module=__name__) +kpms_pca.activate(db_prefix + "kpms_pca", linking_module=__name__) +kpms_model.activate(db_prefix + "kpms_model", linking_module=__name__) From c18000fe61c05d2a92488821c650c68163963710 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 04:01:37 +0100 Subject: [PATCH 38/90] Create functions in `readers/kpms_reader.py` --- element_moseq/readers/kpms_reader.py | 159 +++++++++++++++++++++++---- 1 file changed, 139 insertions(+), 20 deletions(-) diff --git a/element_moseq/readers/kpms_reader.py b/element_moseq/readers/kpms_reader.py index d38b332..01948fd 100644 --- a/element_moseq/readers/kpms_reader.py +++ b/element_moseq/readers/kpms_reader.py @@ -1,26 +1,145 @@ -import re +import os import logging -import numpy as np -import pandas as pd -from pathlib import Path -import pickle -from ruamel.yaml import YAML +import yaml +# from ruamel.yaml import YAML from element_interface.utils import find_root_directory, dict_to_uuid -from .. import model -from ..model import get_dlc_root_data_dir from datajoint.errors import DataJointError logger = logging.getLogger("datajoint") -# def read_yaml(fullpath: str, filename: str = '*') -> tuple: -# """ Return contents of yaml in fullpath. If available, defer to DJ-saved version - -# Args: -# fullpath (str): String or pathlib path. Directory with yaml files -# filename (str, optional): Filename, no extension. - -# Returns: -# Tuple of (a) filepath as pathlib.PosixPath and (b) file contents as dict -# """ - - \ No newline at end of file +def _build_yaml(sections, comments): + text_blocks = [] + for title, data in sections: + centered_title = f" {title} ".center(50, "=") + text_blocks.append(f"\n\n{'#'}{centered_title}{'#'}") + for key, value in data.items(): + text = yaml.dump({key: value}).strip("\n") + if key in comments: + text = f"\n{'#'} {comments[key]}\n{text}" + text_blocks.append(text) + return "\n".join(text_blocks) + + +def generate_dj_config(project_dir, **kwargs): + """Generate a `dj_config.yml` file with project settings. Default settings + will be used unless overriden by a keyword argument. + + Parameters + ---------- + project_dir: str + A file `dj_config.yml` will be generated in this directory. + + kwargs + Custom project settings. + """ + + def _update_dict(new, original): + return {k: new[k] if k in new else v for k, v in original.items()} + + hypperams = _update_dict( + kwargs, + { + "error_estimator": {"slope": -0.5, "intercept": 0.25}, + "obs_hypparams": { + "sigmasq_0": 0.1, + "sigmasq_C": 0.1, + "nu_sigma": 1e5, + "nu_s": 5, + }, + "ar_hypparams": { + "latent_dim": 10, + "nlags": 3, + "S_0_scale": 0.01, + "K_0_scale": 10.0, + }, + "trans_hypparams": { + "num_states": 100, + "gamma": 1e3, + "alpha": 5.7, + "kappa": 1e6, + }, + "cen_hypparams": {"sigmasq_loc": 0.5}, + }, + ) + + hypperams = {k: _update_dict(kwargs, v) for k, v in hypperams.items()} + + anatomy = _update_dict( + kwargs, + { + "bodyparts": ["BODYPART1", "BODYPART2", "BODYPART3"], + "use_bodyparts": ["BODYPART1", "BODYPART2", "BODYPART3"], + "skeleton": [ + ["BODYPART1", "BODYPART2"], + ["BODYPART2", "BODYPART3"], + ], + "anterior_bodyparts": ["BODYPART1"], + "posterior_bodyparts": ["BODYPART3"], + }, + ) + + other = _update_dict( + kwargs, + { + "recording_name_suffix": "", + "verbose": False, + "conf_pseudocount": 1e-3, + "video_dir": "", + "keypoint_colormap": "autumn", + "whiten": True, + "fix_heading": False, + "seg_length": 10000, + }, + ) + + fitting = _update_dict( + kwargs, + { + "added_noise_level": 0.1, + "PCA_fitting_num_frames": 1000000, + "conf_threshold": 0.5, + # 'kappa_scan_target_duration': 12, + # 'kappa_scan_min': 1e2, + # 'kappa_scan_max': 1e12, + # 'num_arhmm_scan_iters': 50, + # 'num_arhmm_final_iters': 200, + # 'num_kpslds_scan_iters': 50, + # 'num_kpslds_final_iters': 500 + }, + ) + + comments = { + "verbose": "whether to print progress messages during fitting", + "keypoint_colormap": "colormap used for visualization; see `matplotlib.cm.get_cmap` for options", + "added_noise_level": "upper bound of uniform noise added to the data during initial AR-HMM fitting; this is used to regularize the model", + "PCA_fitting_num_frames": "number of frames used to fit the PCA model during initialization", + "video_dir": "directory with videos from which keypoints were derived (used for crowd movies)", + "recording_name_suffix": "suffix used to match videos to recording names; this can usually be left empty (see `util.find_matching_videos` for details)", + "bodyparts": "used to access columns in the keypoint data", + "skeleton": "used for visualization only", + "use_bodyparts": "determines the subset of bodyparts to use for modeling and the order in which they are represented", + "anterior_bodyparts": "used to initialize heading", + "posterior_bodyparts": "used to initialize heading", + "seg_length": "data are broken up into segments to parallelize fitting", + "trans_hypparams": "transition hyperparameters", + "ar_hypparams": "autoregressive hyperparameters", + "obs_hypparams": "keypoint observation hyperparameters", + "cen_hypparams": "centroid movement hyperparameters", + "error_estimator": "parameters to convert neural net likelihoods to error size priors", + "save_every_n_iters": "frequency for saving model snapshots during fitting; if 0 only final state is saved", + "kappa_scan_target_duration": "target median syllable duration (in frames) for choosing kappa", + "whiten": "whether to whiten principal components; used to initialize the latent pose trajectory `x`", + "conf_threshold": "used to define outliers for interpolation when the model is initialized", + "conf_pseudocount": "pseudocount used regularize neural network confidences", + "fix_heading": "whether to keep the heading angle fixed; this should only be True if the pose is constrained to a narrow range of angles, e.g. a headfixed mouse.", + } + + sections = [ + ("ANATOMY", anatomy), + ("FITTING", fitting), + ("HYPER PARAMS", hypperams), + ("OTHER", other), + ] + + with open(os.path.join(project_dir, "dj_config.yml"), "w") as f: + f.write(_build_yaml(sections, comments)) From 7d7ad374cf91073cc33844d615418bca786ab399 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 04:02:34 +0100 Subject: [PATCH 39/90] first draft of `element_moseq/kpms_pca.py` --- element_moseq/kpms_pca.py | 236 +++++++++++++++++--------------------- 1 file changed, 105 insertions(+), 131 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 97a68a3..40290ea 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -4,13 +4,25 @@ from typing import Optional import numpy as np from datetime import datetime - import inspect import importlib import os +import yaml from pathlib import Path -from element_interface.utils import find_full_path, dict_to_uuid +from element_interface.utils import find_full_path +from .readers.kpms_reader import generate_dj_config +from keypoint_moseq import ( + setup_project, + load_config, + load_keypoints, + format_data, + load_pca, + fit_pca, + save_pca, + check_config_validity + ) + schema = dj.schema() _linking_module = None @@ -286,23 +298,21 @@ class PCATask(dj.Manual): --- project_path='' : varchar(255) # KPMS's project_path in config relative to root task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation + variance_threshold : float # Variance threshold to be explained by the PCA model """ @schema -class FormattedDataset(dj.Imported): +class FormattedDataset(dj.Imported): # --> TO-DO: change name for a more intuitive option """ - Table for storing the formatted dataset. + Table for storing the formatted dataset and update the config.yml by creating a new dj_config.yml in the project path (output_dir) """ definition = """ -> PCATask --- - config : longblob # stored full config file coordinates : longblob confidences : longblob - bodyparts : longblob - data : longblob - metadata : longblob + formatted_bodyparts : longblob """ def make(self, key): @@ -333,21 +343,12 @@ def make(self, key): method = (KeypointSet & key).fetch1("kpset_method") format = (PoseEstimationMethod & {'format':method}).fetch1("format") kpset_config_path, kpset_videos_path = (KeypointSet & key).fetch1("kpset_config_path","kpset_videos_path") - - from keypoint_moseq import (setup_project, - load_config, - check_config_validity, - update_config, - load_keypoints, - format_data) if task_mode == "trigger": config = setup_project( project_path, deeplabcut_config=kpset_config_path - ) # setup a project directory for deeplabcut, sleap or nwb config, and generate a `config.yml` file with project settings. Overwrite by default is false. If the project dir already exists, pick a different project dir name. - + ) - # TO-DO: Here there should be the creation of a DJ_config file to update the new bodyparts elif task_mode == "load": config_kwargs_dict = dict( video_dir = kpset_videos_path, @@ -355,156 +356,129 @@ def make(self, key): posterior_bodyparts = posterior_bodyparts, use_bodyparts = use_bodyparts) - ## The following function `update_config` does the following: (1) config = load_config(...), (2) config.update(kwargs), (3) generate_config(project_dir, **config) - update_config( - project_path, - **config_kwargs_dict - ) - - # To check load_config, this is the function: - # check_if_valid = True - # build_indexes = True - # config_path = os.path.join(project_path, "config.yml") - - ## Proposal: Instead of updating the new bodyparts in the original kpms_config file, the previous function will be splitted to create a new config file instead named `dj_config.yml` with the new bodyparts - # config=load_config(project_path, check_if_valid=False, build_indexes=False) - # config.update(config_kwargs_dict) - # generate a new config file, not overwriting the original config file - + # Update the config with new video_dir and bodyparts and save it as `dj_config.yml` + config = load_config(project_path, check_if_valid=True, build_indexes=False) + config.update(**config_kwargs_dict) + generate_dj_config(project_path, **config) - # load data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap - coordinates, confidences, bodyparts = load_keypoints( + # load keypoints data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap + coordinates, confidences, formatted_bodyparts = load_keypoints( filepath_pattern=kpset_videos_path, format=format ) - # coordinates: dict - # Dictionary mapping filenames to keypoint coordinates as ndarrays of - # shape (n_frames, n_bodyparts, 2[or 3]) - - # confidences: dict - # Dictionary mapping filenames to `likelihood` scores as ndarrays of - # shape (n_frames, n_bodyparts) - - # bodyparts: list of str - # List of bodypart names. The order of the names matches the order of the - # bodyparts in `coordinates` and `confidences`. - - # formatted_bodyparts is not necessarily the same as use_bodyparts - - - - # format data for modeling - # Data are transformed as follows: - # 1. Coordinates and confidences are each merged into a single array - # using :py:func:`keypoint_moseq.util.batch`. Each row of the merged - # arrays is a segment from one recording. - # 2. The keypoints axis is reindexed according to the order of elements - # in `use_bodyparts` with respect to their initial orer in - # `bodyparts`. - # 3. Uniform noise proportional to `added_noise_level` is added to the - # keypoint coordinates to prevent degenerate solutions during fitting. - # 4. Keypoint confidences are augmented by `conf_pseudocount`. - # 5. Wherever NaNs occur in the coordinates, they are replaced by values - # imputed using linear interpolation, and the corresponding - # confidences are set to `conf_pseudocount`. - - # TO-DO: fix issue with the config["anterior_idxs"] since they are iterated as characters, not words, and rise an error: ` 'n' is not in list` - data, metadata = format_data( - **config, coordinates=coordinates, confidences=confidences - ) - # data: dict with the following items - # Y: jax array with shape (n_segs, seg_length, K, D) - # Keypoint coordinates from all recordings broken into fixed-length segments. - - # conf: jax array with shape (n_segs, seg_length, K) - # Confidences from all recordings broken into fixed-length segments. If no input is provided for confidences, then data["conf"]=None. - - # mask: jax array with shape (n_segs, seg_length) - # Binary array where 0 indicates areas of padding - # (see keypoint_moseq.util.batch). - - # metadata: tuple (keys, bounds) - # Metadata for the rows of Y, conf and mask, as a tuple with a array of recording names and an array of (start,end) times. See - # jax_moseq.utils.batch for details. - - - # TO-DO: store data and metadata in files (Not allowed to store this jax data type as longblob in the table) - - self.FormattedDataset.insert1( + self.insert1( dict( **key, - config=config, coordinates=coordinates, confidences=confidences, - bodyparts=bodyparts, - # data=data, -----> should be saved as a file - # metadata=metadata,-----> should be saved as a file + formatted_bodyparts=formatted_bodyparts ) ) @schema class PCAFitting(dj.Computed): + definition = """ - -> FormattedDataset - pca_fitting_id : int + -> PCATask --- - pca_fitting_time : datetime # Time of generation of the PCA fitting analysis - pca : longblob + pca_fitting_time = NULL : datetime # Time of generation of the PCA fitting analysis """ def make(self, key): - from keypoint_moseq import ( - load_pca, - fit_pca, - save_pca, - print_dims_to_explain_variance, - plot_scree, - plot_pcs, - ) task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") - config = (PCATask.FormattedDataset & key).fetch1( "config") - - # data = ---> Load data from the file saved in the previous table - - project_path = find_full_path(get_kpms_root_data_dir(), project_path) + config = load_config(project_path, check_if_valid=True, build_indexes=False) + coordinates, confidences = (FormattedDataset & key).fetch1( + "coordinates", "confidences" + ) - if task_mode == "load": - pca = load_pca(**data, **config()) + data, metadata = format_data( + **config, coordinates=coordinates, confidences=confidences + ) - elif task_mode == "trigger": - pca = fit_pca(**data, **config()) - save_pca(pca, project_path) + if task_mode == "trigger": + pca = fit_pca(data, **config) + pca_path = os.path.join(project_path, "pca_{}.p".format(key["pca_fitting_id"])) + save_pca(pca, pca_path) # The model is saved creation_time = datetime.strftime("%Y-%m-%d %H:%M:%S") - print_dims_to_explain_variance(pca, 0.9) - plot_scree(pca, project_dir=project_path) - plot_pcs(pca, project_dir=project_path, **config()) - - self.insert1(**key, pca_fitting_time=creation_time, pca=pca) + self.insert1(**key, pca_fitting_time=creation_time) @schema -class LatentDimension(dj.Lookup): +class LatentDimensionSet(dj.Lookup): + """ + This table is used to store the number of latent dimensions to be used in the analysis (manually inserted or computed from the variance threshold by the DimsExplainedVariance table). + """ definition = """ latent_dim : int --- latent_dim_description='' : varchar(1000) """ +@schema +class DimsExplainedVariance(dj.Computed): + """ + This is an optional table to compute and store the latent dimensions that explain a certain specified variance threshold. + """ + definition = """ + -> PCATask + --- + variance_percentage : float + dims_explained_variance : int + """ + + def make(self, key): + variance_threshold, project_path = (PCATask & key).fetch1("variance_threshold","project_path") + pca = load_pca(project_path) + cs = np.cumsum(pca.explained_variance_ratio_) + # explained_variance_ratio_ndarray of shape (n_components,) + # Percentage of variance explained by each of the selected components. + # If n_components is not set then all components are stored and the sum of the ratios is equal to 1.0. + if cs[-1] < variance_threshold: + dims_explained_variance = len(cs) + variance_percentage = cs[-1]*100 + LatentDimensionSet.insert1(dict(latent_dim = dims_explained_variance, + latent_dim_description= (f"All components together only explain {cs[-1]*100}% of variance."))) + + else: + dims_explained_variance = (cs>variance_threshold).nonzero()[0].min()+1 + variance_percentage = variance_threshold*100 + LatentDimensionSet.insert1(dict(latent_dim= dims_explained_variance, + latent_dim_description= (f">={variance_threshold*100}% of variance exlained by {(cs>variance_threshold).nonzero()[0].min()+1} components."))) + + self.insert1(dict(**key, + variance_percentage = variance_percentage, + dims_explained_variance=dims_explained_variance)) - + @schema -class UpdateLatentDimension(dj.Computed): +class UpdateLatentDimensionTask(dj.Manual): + """ + This table allows the user to choose between the manual or computed latent dimension from the LatentDimension table for a PCA model. + """ definition = """ - -> PCAFitting - -> LatentDimension + -> PCATask + latent_dim : int """ +@schema +class UpdateLatentDimension(dj.Computed): + """ + This table updates the chosen latent dimension in the UpdateLatentDimensionTask in the `dj_config.yml` file. + """ + definition=""" + ->UpdateLatentDimensionTask + """ + def make(self, key): - # update latent_dim in config_file - from keypoint_moseq import update_config - project_path = (PCATask & key).fetch1("project_path") - latent_dim = (LatentDimension & key).fetch1("latent_dim") - update_config(project_path, latent_dim=latent_dim) + latent_dim = (UpdateLatentDimensionTask & key).fetch1("latent_dim") + + # Update the `dj_config.yml` with a possible new latent_dir + config_path = os.path.join(project_path, "dj_config.yml") + with open(config_path, "r") as stream: + config = yaml.safe_load(stream) + check_config_validity(config) + config.update(dict(latent_dim = int(latent_dim))) + generate_dj_config(project_path, **config) From 3ee1d09068ee292ce59803b92b8b11715627d846 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 04:07:39 +0100 Subject: [PATCH 40/90] update testing notebook --- notebooks/testing.ipynb | 1981 +++++++++++++++++++++++++++++++-------- 1 file changed, 1577 insertions(+), 404 deletions(-) diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index eefd845..e5e9e6d 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -9,10 +9,7 @@ "import os\n", "\n", "if os.path.basename(os.getcwd()) == \"notebooks\":\n", - " os.chdir(\"..\")\n", - "assert os.path.basename(os.getcwd()) == \"element-moseq\", (\n", - " \"Please move to the \" + \"element directory\"\n", - ")" + " os.chdir(\"..\")" ] }, { @@ -22,285 +19,380 @@ "outputs": [], "source": [ "import datajoint as dj\n", - "from pathlib import Path" + "from pathlib import Path\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "dj.config.load(\"dj_local_conf.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dj.config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dj.conn()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dj.list_schemas()" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_pca\").drop()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "[2024-01-02 08:32:38,675][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + "[2024-03-08 03:53:37,997][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" ] + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'plotly': 'https://cdn.plot.ly/plotly-2.18.0.min', 'tabulator': 'https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.0/dist/js/tabulator', 'moment': 'https://cdn.jsdelivr.net/npm/luxon/build/global/luxon.min', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"plotly\"], function(Plotly) {\n\twindow.Plotly = Plotly\n\ton_load()\n })\n require([\"tabulator\"], function(Tabulator) {\n\twindow.Tabulator = Tabulator\n\ton_load()\n })\n require([\"moment\"], function(moment) {\n\twindow.moment = moment\n\ton_load()\n })\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 12;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['Plotly'] !== undefined) && (!(window['Plotly'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/plotlyplot/plotly-2.18.0.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Tabulator'] !== undefined) && (!(window['Tabulator'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['moment'] !== undefined) && (!(window['moment'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/luxon/build/global/luxon.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/jquery/jquery.slim.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/plotlyplot/plotly-2.18.0.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/luxon/build/global/luxon.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [\"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/css/tabulator_simple.min.css\"];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\".tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:10}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:\\\"\\\";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}\\n/*# sourceMappingURL=tabulator_simple.min.css.map */\");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "6a106c71-1b1c-4de8-bf82-6f3d46cd30cc" + } + }, + "output_type": "display_data" } ], "source": [ - "from tutorial_pipeline import lab, subject, session, pca, model, Device" + "# from element_moseq import kpms_pca\n", + "from tutorial_pipeline import lab, subject, session, kpms_pca" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.PCAFitting\n", - "\n", - "\n", - "pca.PCAFitting\n", + "kpms_pca.LatentDimensionSet\n", + "\n", + "\n", + "kpms_pca.LatentDimensionSet\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.UpdateLatentDimension\n", - "\n", - "\n", - "pca.UpdateLatentDimension\n", + "kpms_pca.KeypointSet\n", + "\n", + "\n", + "kpms_pca.KeypointSet\n", "\n", "\n", "\n", - "\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFiles\n", + "\n", + "\n", + "\n", + "\n", "\n", - "pca.PCAFitting->pca.UpdateLatentDimension\n", - "\n", + "kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFiles\n", + "\n", "\n", - "\n", + "\n", "\n", - "model.PreFittingTask\n", - "\n", - "\n", - "model.PreFittingTask\n", + "kpms_pca.PCATask\n", + "\n", + "\n", + "kpms_pca.PCATask\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.PCAFitting->model.PreFittingTask\n", - "\n", - "\n", - "\n", - "\n", - "model.FullFitting\n", - "\n", - "\n", - "model.FullFitting\n", - "\n", - "\n", + "kpms_pca.KeypointSet->kpms_pca.PCATask\n", + "\n", "\n", - "\n", - "\n", - "pca.LatentDimension\n", - "\n", - "\n", - "pca.LatentDimension\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.LatentDimension->pca.UpdateLatentDimension\n", - "\n", - "\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", - "\n", - "\n", - "pca.PCATask.FormattedDataset\n", - "\n", - "\n", + "kpms_pca.KeypointSet->kpms_pca.Bodyparts\n", + "\n", "\n", - "\n", - "\n", - "model.PreFitting\n", - "\n", - "\n", - "model.PreFitting\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "model.PreFittingTask->model.PreFitting\n", - "\n", + "kpms_pca.KeypointSet.VideoFiles->kpms_pca.RecordingInfo\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet.VideoFiles\n", - "\n", - "\n", - "pca.KeypointSet.VideoFiles\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pca.RecordingInfo\n", - "\n", - "\n", - "pca.RecordingInfo\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet.VideoFiles->pca.RecordingInfo\n", - "\n", + "kpms_pca.PCATask->kpms_pca.FormattedDataset\n", + "\n", "\n", - "\n", + "\n", "\n", - "model.InitializationParamSet\n", - "\n", - "\n", - "model.InitializationParamSet\n", + "kpms_pca.UpdateLatentDimensionTask\n", + "\n", + "\n", + "kpms_pca.UpdateLatentDimensionTask\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "model.InitializationParamSet->model.PreFittingTask\n", - "\n", + "kpms_pca.PCATask->kpms_pca.UpdateLatentDimensionTask\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet\n", - "\n", - "\n", - "pca.KeypointSet\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.KeypointSet.VideoFiles\n", - "\n", + "kpms_pca.PCATask->kpms_pca.DimsExplainedVariance\n", + "\n", "\n", - "\n", - "\n", - "pca.Bodyparts\n", - "\n", - "\n", - "pca.Bodyparts\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.Bodyparts\n", - "\n", - "\n", - "\n", - "\n", - "pca.PCATask\n", - "\n", - "\n", - "pca.PCATask\n", - "\n", - "\n", + "kpms_pca.PCATask->kpms_pca.PCAFitting\n", + "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.PCATask\n", - "\n", + "kpms_pca.Bodyparts->kpms_pca.PCATask\n", + "\n", "\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", - "\n", - "\n", - "pca.KeypointSet.PoseEstimationMethod\n", + "\n", + "\n", + "kpms_pca.UpdateLatentDimension\n", + "\n", + "\n", + "kpms_pca.UpdateLatentDimension\n", "\n", "\n", "\n", - "\n", + "\n", "\n", - "pca.KeypointSet->pca.KeypointSet.PoseEstimationMethod\n", - "\n", - "\n", - "\n", - "\n", - "pca.Bodyparts->pca.PCATask\n", - "\n", - "\n", - "\n", - "\n", - "model.FullFittingTask\n", - "\n", - "\n", - "model.FullFittingTask\n", - "\n", + "kpms_pca.UpdateLatentDimensionTask->kpms_pca.UpdateLatentDimension\n", + "\n", "\n", - "\n", - "\n", - "\n", - "model.PreFitting->model.FullFittingTask\n", - "\n", - "\n", - "\n", - "\n", - "model.FittingParamSet\n", - "\n", - "\n", - "model.FittingParamSet\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", "\n", "\n", "\n", - "\n", - "\n", - "model.FittingParamSet->model.FullFittingTask\n", - "\n", - "\n", - "\n", - "\n", - "pca.PCATask->pca.PCAFitting\n", - "\n", - "\n", - "\n", - "\n", - "pca.PCATask->pca.UpdateLatentDimension\n", - "\n", - "\n", - "\n", - "\n", - "pca.PCATask->pca.PCATask.FormattedDataset\n", - "\n", - "\n", - "\n", - "\n", - "model.FullFittingTask->model.FullFitting\n", - "\n", - "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dj.Diagram(pca) + dj.Diagram(model)" + "dj.Diagram(kpms_pca)\n", + "# + dj.Diagram(model)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -371,11 +463,17 @@ "

kpset_id

\n", " \n", "
\n", - "

kpset_path

\n", - " Path relative to root data directory where the videos and their keypoints are located.\n", + "

kpset_method

\n", + " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap\n", + "
\n", + "

kpset_config_path

\n", + " Path relative to root data directory where the config file is located\n", + "
\n", + "

kpset_videos_path

\n", + " Path relative to root data directory where the videos and their keypoints are located\n", "
\n", "

kpset_description

\n", - " Optional. User-entered description.\n", + " Optional. User-entered description\n", "
\n", " \n", " \n", @@ -384,24 +482,24 @@ " " ], "text/plain": [ - "*subject *session_datet *kpset_id kpset_path kpset_descript\n", - "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "*subject *session_datet *kpset_id kpset_method kpset_config_p kpset_videos_p kpset_descript\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", "\n", " (Total: 0)" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.KeypointSet()" + "kpms_pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -416,34 +514,41 @@ " skip_duplicates=True,\n", ")\n", "\n", - "#Definition of the dictionary named \"session_keys\"\n", + "# Definition of the dictionary named \"session_keys\"\n", "session_keys = [\n", " dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\"),\n", " dict(subject=\"subject1\", session_datetime=\"2021-06-03 14:43:10\"),\n", "]\n", "\n", - "#Insert this dictionary in the Session table\n", + "# Insert this dictionary in the Session table\n", "session.Session.insert(session_keys, skip_duplicates=True)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "kpset_key = dict(subject=\"subject1\",\n", - " session_datetime=\"2021-06-02 14:04:22\",\n", - " kpset_id=1)\n", - "pca.KeypointSet.insert1({**kpset_key, \n", - " \"kpset_path\":\"/input_data/videos\",\n", - " \"kpset_description\":\"testing pca schema\"},\n", - " skip_duplicates=True)" + "kpset_key = dict(subject=\"subject1\", \n", + " session_datetime=\"2021-06-02 14:04:22\", \n", + " kpset_id=1)\n", + "\n", + "kpms_pca.KeypointSet.insert1(\n", + " {\n", + " **kpset_key,\n", + " \"kpset_method\":\"deeplabcut\",\n", + " \"kpset_config_path\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data\",\n", + " \"kpset_videos_path\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos\",\n", + " \"kpset_description\": \"testing kpms pca schema\",\n", + " },\n", + " skip_duplicates=True,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -514,58 +619,70 @@ "

kpset_id

\n", " \n", "
\n", - "

kpset_path

\n", - " Path relative to root data directory where the videos and their keypoints are located.\n", + "

kpset_method

\n", + " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap\n", + "
\n", + "

kpset_config_path

\n", + " Path relative to root data directory where the config file is located\n", + "
\n", + "

kpset_videos_path

\n", + " Path relative to root data directory where the videos and their keypoints are located\n", "
\n", "

kpset_description

\n", - " Optional. User-entered description.\n", + " Optional. User-entered description\n", "
\n", " subject1\n", "2021-06-02 14:04:22\n", "1\n", - "/input_data/videos\n", - "testing pca schema \n", + "deeplabcut\n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data\n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos\n", + "testing kpms pca schema \n", " \n", " \n", "

Total: 1

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id kpset_path kpset_descript\n", - "+----------+ +------------+ +----------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 /input_data/vi testing pca sc\n", + "*subject *session_datet *kpset_id kpset_method kpset_config_p kpset_videos_p kpset_descript\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 deeplabcut /Users/milagro /Users/milagro testing kpms p\n", " (Total: 1)" ] }, - "execution_count": 13, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.KeypointSet()" + "kpms_pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "video_files = [\"/input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", - " \"/input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", - " \"/input_data/videos/21_12_2_def6b_2.top.ir.mp4\"]\n", + "video_files = [\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4\",\n", + "]\n", "\n", - "pca.KeypointSet.VideoFiles.insert(\n", - " ({**kpset_key, \"video_id\":v_idx, \"video_path\":Path(f)}\n", - " for v_idx, f in enumerate(video_files)),\n", - " skip_duplicates=True\n", + "kpms_pca.KeypointSet.VideoFiles.insert(\n", + " (\n", + " {**kpset_key, \"video_id\": v_idx, \"video_path\": Path(f)}\n", + " for v_idx, f in enumerate(video_files)\n", + " ),\n", + " skip_duplicates=True,\n", ")" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -646,15 +763,15 @@ "2021-06-02 14:04:22\n", "1\n", "0\n", - "/input_data/videos/21_11_8_one_mouse.top.ir.Mp4subject1\n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4subject1\n", "2021-06-02 14:04:22\n", "1\n", "1\n", - "/input_data/videos/21_12_2_def6a_1.top.ir.mp4subject1\n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4subject1\n", "2021-06-02 14:04:22\n", "1\n", "2\n", - "/input_data/videos/21_12_2_def6b_2.top.ir.mp4 \n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4 \n", " \n", " \n", "

Total: 3

\n", @@ -663,39 +780,24 @@ "text/plain": [ "*subject *session_datet *kpset_id *video_id video_path \n", "+----------+ +------------+ +----------+ +----------+ +------------+\n", - "subject1 2021-06-02 14: 1 0 /input_data/vi\n", - "subject1 2021-06-02 14: 1 1 /input_data/vi\n", - "subject1 2021-06-02 14: 1 2 /input_data/vi\n", + "subject1 2021-06-02 14: 1 0 /Users/milagro\n", + "subject1 2021-06-02 14: 1 1 /Users/milagro\n", + "subject1 2021-06-02 14: 1 2 /Users/milagro\n", " (Total: 3)" ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.KeypointSet.VideoFiles()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "pca.KeypointSet.PoseEstimationMethod.insert1(\n", - " {**kpset_key,\n", - " \"format\":\"deeplabcut\",\n", - " \"extension\":\"h5\",\n", - " \"device\":\"Camera1\"},\n", - " skip_duplicates=True\n", - ")" + "kpms_pca.KeypointSet.VideoFiles()" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -753,62 +855,47 @@ " }\n", " \n", " \n", - " Parameters used to obtain the keypoints data based on a specific pose estimation method\n", + " Parameters used to obtain the keypoints data based on a specific pose estimation method.\n", "
\n", " \n", " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
\n", - "

subject

\n", - " \n", + "

format

\n", + " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

format

\n", - " deeplabcut, sleap\n", - "
\n", - "

extension

\n", - " h5, csv\n", - "
\n", - "

device

\n", - " \n", + "

pose_estimation_desc

\n", + " Optional. Pose estimation method description\n", "
subject12021-06-02 14:04:221deeplabcuth5Camera1
anipose`.csv` files generated by anipose analysis
deeplabcut`.csv` and `.h5/.hdf5` files generated by DeepLabcut analysis
facemap`.h5` files generated by Facemap analysis
nwb`.nwb` files with Neurodata Without Borders (NWB) format
sleap`.slp` and `.h5/.hdf5` files generated by SLEAP analysis
sleap-anipose`.h5/.hdf5` files generated by sleap-anipose analysis
\n", " \n", - "

Total: 1

\n", + "

Total: 6

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id format extension device \n", - "+----------+ +------------+ +----------+ +------------+ +-----------+ +---------+\n", - "subject1 2021-06-02 14: 1 deeplabcut h5 Camera1 \n", - " (Total: 1)" + "*format pose_estimatio\n", + "+------------+ +------------+\n", + "anipose `.csv` files g\n", + "deeplabcut `.csv` and `.h\n", + "facemap `.h5` files ge\n", + "nwb `.nwb` files w\n", + "sleap `.slp` and `.h\n", + "sleap-anipose `.h5/.hdf5` fi\n", + " (Total: 6)" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.KeypointSet.PoseEstimationMethod()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# pca.RecordingInfo.populate()" + "kpms_pca.PoseEstimationMethod()" ] }, { @@ -884,17 +971,26 @@ "

kpset_id

\n", " \n", "
\n", - "

bodyparts_id

\n", + "

video_id

\n", " \n", "
\n", - "

anterior_bodyparts

\n", - " list of strings of anterior bodyparts\n", + "

px_height

\n", + " Height in pixels\n", "
\n", - "

posterior_bodyparts

\n", - " list of strings of posterior bodyparts\n", + "

px_width

\n", + " Width in pixels\n", "
\n", - "

use_bodyparts

\n", - " list of strings of bodyparts to be used\n", + "

nframes

\n", + " Number of frames\n", + "
\n", + "

fps

\n", + " Optional. Frames per second, Hz\n", + "
\n", + "

recording_datetime

\n", + " Optional. Datetime for the start of the recording\n", + "
\n", + "

recording_duration

\n", + " Video duration (s) from nframes / fps\n", "
\n", " \n", " \n", @@ -903,8 +999,8 @@ " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", - "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "*subject *session_datet *kpset_id *video_id px_height px_width nframes fps recording_date recording_dura\n", + "+---------+ +------------+ +----------+ +----------+ +-----------+ +----------+ +---------+ +-----+ +------------+ +------------+\n", "\n", " (Total: 0)" ] @@ -915,7 +1011,7 @@ } ], "source": [ - "pca.Bodyparts()" + "kpms_pca.RecordingInfo()" ] }, { @@ -924,21 +1020,12 @@ "metadata": {}, "outputs": [], "source": [ - "# Insert data in PCAInfo table\n", - "bodypart_key = {**kpset_key,\n", - " \"bodyparts_id\":1}\n", - "pca.Bodyparts.insert1({**bodypart_key,\n", - " \"anterior_bodyparts\":\"nose\",\n", - " \"posterior_bodyparts\":\"spine4\",\n", - " \"use_bodyparts\":['spine4', 'spine3', 'spine2', 'spine1',\n", - " 'head', 'nose', 'right ear', 'left ear']},\n", - " skip_duplicates=True)\n", - "\n" + "kpms_pca.RecordingInfo.populate()" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -996,7 +1083,7 @@ " }\n", " \n", " \n", - " Manual table for defining a data loading task ready to be run\n", + " \n", "
\n", " \n", " \n", - " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "
\n", @@ -1009,52 +1096,81 @@ "

kpset_id

\n", " \n", "
\n", - "

bodyparts_id

\n", + "

video_id

\n", " \n", "
\n", - "

project_path

\n", - " KPMS's project_path in config relative to root\n", + "

px_height

\n", + " Height in pixels\n", "
\n", - "

task_mode

\n", - " 'load': load computed analysis results, 'trigger': trigger computation\n", + "

px_width

\n", + " Width in pixels\n", + "
\n", + "

nframes

\n", + " Number of frames\n", + "
\n", + "

fps

\n", + " Optional. Frames per second, Hz\n", + "
\n", + "

recording_datetime

\n", + " Optional. Datetime for the start of the recording\n", + "
\n", + "

recording_duration

\n", + " Video duration (s) from nframes / fps\n", "
subject12021-06-02 14:04:22105766407152430None2384.13
subject12021-06-02 14:04:221157664010750730None3583.57
subject12021-06-02 14:04:221257664010752030None3584.0
\n", " \n", - "

Total: 0

\n", + "

Total: 3

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", - "\n", - " (Total: 0)" + "*subject *session_datet *kpset_id *video_id px_height px_width nframes fps recording_date recording_dura\n", + "+----------+ +------------+ +----------+ +----------+ +-----------+ +----------+ +---------+ +-----+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 0 576 640 71524 30 None 2384.13 \n", + "subject1 2021-06-02 14: 1 1 576 640 107507 30 None 3583.57 \n", + "subject1 2021-06-02 14: 1 2 576 640 107520 30 None 3584.0 \n", + " (Total: 3)" ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.PCATask()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "pca.PCATask.insert1({**bodypart_key,\n", - " \"project_path\":\"/kpms_project\",\n", - " \"task_mode\":\"load\"},\n", - " skip_duplicates=True)" + "kpms_pca.RecordingInfo()" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1112,7 +1228,7 @@ " }\n", " \n", " \n", - " Manual table for defining a data loading task ready to be run\n", + " \n", "
\n", " \n", " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", + " \n", "
\n", @@ -1128,65 +1244,68 @@ "

bodyparts_id

\n", " \n", "
\n", - "

project_path

\n", - " KPMS's project_path in config relative to root\n", + "

anterior_bodyparts

\n", + " List of strings of anterior bodyparts\n", "
\n", - "

task_mode

\n", - " 'load': load computed analysis results, 'trigger': trigger computation\n", + "

posterior_bodyparts

\n", + " List of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " List of strings of bodyparts to be used\n", "
subject12021-06-02 14:04:2211/kpms_projectload
\n", " \n", - "

Total: 1

\n", + "

Total: 0

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id project_path task_mode \n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", - "subject1 2021-06-02 14: 1 1 /kpms_project load \n", - " (Total: 1)" + "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", + "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" ] }, - "execution_count": 24, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.PCATask()" + "kpms_pca.Bodyparts()" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[25], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pca\u001b[39m.\u001b[39;49mPCATask\u001b[39m.\u001b[39;49mgenerate(bodypart_key)\n", - "File \u001b[0;32m~/Documents/datajoint-elements/element-moseq/element_moseq/pca.py:264\u001b[0m, in \u001b[0;36mPCATask.generate\u001b[0;34m(cls, key)\u001b[0m\n\u001b[1;32m 261\u001b[0m video_path \u001b[39m=\u001b[39m (KeypointSet\u001b[39m.\u001b[39mVideoFiles \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch(\u001b[39m\"\u001b[39m\u001b[39mvideo_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 263\u001b[0m kpset_path \u001b[39m=\u001b[39m (KeypointSet \u001b[39m&\u001b[39m key)\u001b[39m.\u001b[39mfetch1(\u001b[39m\"\u001b[39m\u001b[39mkpset_path\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 264\u001b[0m kpset_path \u001b[39m=\u001b[39m find_full_path(get_kpms_root_data_dir(), kpset_path)\n\u001b[1;32m 266\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mkeypoint_moseq\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mkpms\u001b[39;00m\n\u001b[1;32m 268\u001b[0m \u001b[39m# define config file for kpms with anonymous function\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda/envs/kpms_test/lib/python3.9/site-packages/element_interface/utils.py:42\u001b[0m, in \u001b[0;36mfind_full_path\u001b[0;34m(root_directories, relative_path)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[39mif\u001b[39;00m (_to_Path(root_dir) \u001b[39m/\u001b[39m relative_path)\u001b[39m.\u001b[39mexists():\n\u001b[1;32m 40\u001b[0m \u001b[39mreturn\u001b[39;00m _to_Path(root_dir) \u001b[39m/\u001b[39m relative_path\n\u001b[0;32m---> 42\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mFileNotFoundError\u001b[39;00m(\n\u001b[1;32m 43\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mNo valid full-path found (from \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 44\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m for \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(root_directories, relative_path)\n\u001b[1;32m 45\u001b[0m )\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: No valid full-path found (from ['/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox', PosixPath('/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox')]) for /input_data/videos" - ] - } - ], + "outputs": [], "source": [ - "pca.PCATask.generate(bodypart_key)" + "# Insert data in PCAInfo table\n", + "bodypart_key = {**kpset_key, \"bodyparts_id\": 1}\n", + "kpms_pca.Bodyparts.insert1(\n", + " {\n", + " **bodypart_key,\n", + " \"anterior_bodyparts\": [\"nose\"],\n", + " \"posterior_bodyparts\": [\"spine2\"],\n", + " \"use_bodyparts\": [\n", + " \"spine4\",\n", + " \"spine3\",\n", + " \"spine2\",\n", + " \"spine1\",\n", + " \"head\",\n", + " \"nose\",\n", + " \"right ear\",\n", + " \"left ear\",\n", + " ],\n", + " },\n", + " skip_duplicates=True,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1260,23 +1379,130 @@ "

bodyparts_id

\n", " \n", "
\n", - "

config

\n", - " stored full config file\n", + "

anterior_bodyparts

\n", + " List of strings of anterior bodyparts\n", "
\n", - "

coordinates

\n", + "

posterior_bodyparts

\n", + " List of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " List of strings of bodyparts to be used\n", + "
\n", + " subject1\n", + "2021-06-02 14:04:22\n", + "1\n", + "1\n", + "=BLOB=\n", + "=BLOB=\n", + "=BLOB= \n", + " \n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id anterior_b posterior_ use_bodypa\n", + "+----------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", + " (Total: 1)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.Bodyparts()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", " \n", "
\n", + "

subject

\n", " \n", "
\n", - "

confidences

\n", + "

session_datetime

\n", " \n", "
\n", - "

bodyparts

\n", + "

kpset_id

\n", " \n", "
\n", - "

data

\n", + "

bodyparts_id

\n", " \n", "
\n", - "

metadata

\n", + "

pca_task_id

\n", " \n", + "
\n", + "

project_path

\n", + " KPMS's project_path in config relative to root\n", + "
\n", + "

task_mode

\n", + " 'load': load computed analysis results, 'trigger': trigger computation\n", + "
\n", + "

variance_threshold

\n", + " Variance threshold to be explained by the PCA model\n", "
\n", @@ -1285,19 +1511,37 @@ " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id config coordinate confidence bodyparts data metadata \n", - "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+\n", + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id project_path task_mode variance_thres\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +-----------+ +------------+\n", "\n", " (Total: 0)" ] }, - "execution_count": 26, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.PCATask.FormattedDataset()" + "kpms_pca.PCATask()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCATask.insert1(\n", + " {\n", + " **bodypart_key,\n", + " \"pca_task_id\": 1,\n", + " \"project_path\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project\",\n", + " \"task_mode\": \"load\",\n", + " \"variance_threshold\": 0.90,\n", + " },\n", + " skip_duplicates=True,\n", + ")" ] }, { @@ -1376,23 +1620,36 @@ "

bodyparts_id

\n", " \n", "
\n", - "

pca_fitting_time

\n", - " Time of generation of the PCA fitting analysis\n", - "
\n", - "

pca

\n", + "

pca_task_id

\n", " \n", + "
\n", + "

project_path

\n", + " KPMS's project_path in config relative to root\n", + "
\n", + "

task_mode

\n", + " 'load': load computed analysis results, 'trigger': trigger computation\n", + "
\n", + "

variance_threshold

\n", + " Variance threshold to be explained by the PCA model\n", "
\n", - " \n", + " subject1\n", + "2021-06-02 14:04:22\n", + "1\n", + "1\n", + "1\n", + "/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project\n", + "load\n", + "0.9 \n", " \n", " \n", - "

Total: 0

\n", + "

Total: 1

\n", " " ], "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti pca \n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +--------+\n", - "\n", - " (Total: 0)" + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id project_path task_mode variance_thres\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +-----------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 1 /Users/milagro load 0.9 \n", + " (Total: 1)" ] }, "execution_count": 27, @@ -1401,13 +1658,38 @@ } ], "source": [ - "pca.PCAFitting()" + "kpms_pca.PCATask()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'subject': 'subject1',\n", + " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", + " 'kpset_id': 1,\n", + " 'bodyparts_id': 1,\n", + " 'pca_task_id': 1}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "key = (kpms_pca.PCATask).fetch1(\"KEY\")\n", + "key" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -1468,10 +1750,28 @@ "
\n", " \n", " \n", " \n", @@ -1481,27 +1781,900 @@ " " ], "text/plain": [ - "*latent_dim latent_dim_des\n", - "+------------+ +------------+\n", + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id coordinate confidence formatted_\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", "\n", " (Total: 0)" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pca.LatentDimension()" + "kpms_pca.FormattedDataset()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ACTION REQUIRED: `anterior_bodyparts` contains n which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains o which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains s which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains e which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains s which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains p which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains i which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains n which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains e which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains 4 which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading keypoints: 100%|████████████████| 10/10 [00:01<00:00, 9.31it/s]\n" + ] + } + ], + "source": [ + "kpms_pca.FormattedDataset.populate(key)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "
\n", - "

latent_dim

\n", + "

subject

\n", " \n", "
\n", - "

latent_dim_description

\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

coordinates

\n", + " \n", + "
\n", + "

confidences

\n", + " \n", + "
\n", + "

formatted_bodyparts

\n", " \n", "
\n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

coordinates

\n", + " \n", + "
\n", + "

confidences

\n", + " \n", + "
\n", + "

formatted_bodyparts

\n", + " \n", + "
subject12021-06-02 14:04:22111=BLOB==BLOB==BLOB=
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id coordinate confidence formatted_\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", + "subject1 2021-06-02 14: 1 1 1 =BLOB= =BLOB= =BLOB= \n", + " (Total: 1)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.FormattedDataset()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

pca_fitting_time

\n", + " Time of generation of the PCA fitting analysis\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id pca_fitting_ti\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.PCAFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ACTION REQUIRED: `anterior_bodyparts` contains n which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains o which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains s which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `anterior_bodyparts` contains e which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains s which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains p which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains i which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains n which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains e which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains 4 which is not one of\n", + " the options in `use_bodyparts`.\n", + "\n" + ] + } + ], + "source": [ + "kpms_pca.PCAFitting.populate(key)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

pca_fitting_time

\n", + " Time of generation of the PCA fitting analysis\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id pca_fitting_ti\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.PCAFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

latent_dim

\n", + " \n", + "
\n", + "

latent_dim_description

\n", + " \n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*latent_dim latent_dim_des\n", + "+------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.LatentDimensionSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.LatentDimensionSet.insert1({\"latent_dim\":3, \"latent_dim_description\":\"testing\"}, skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "
\n", + "

latent_dim

\n", + " \n", + "
\n", + "

latent_dim_description

\n", + " \n", + "
3testing
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*latent_dim latent_dim_des\n", + "+------------+ +------------+\n", + "3 testing \n", + " (Total: 1)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.LatentDimensionSet()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.DimsExplainedVariance.populate(key)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

variance_percentage

\n", + " \n", + "
\n", + "

dims_explained_variance

\n", + " \n", + "
subject12021-06-02 14:04:2211190.04
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id variance_perce dims_explained\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 1 90.0 4 \n", + " (Total: 1)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.DimsExplainedVariance()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# TO-DO: Plotting before choosing the latent dimensions to use \n", + "# plot_scree(pca, project_dir=project_path) # --> both functions to plot outside the pipeline\n", + "# plot_pcs(pca, project_dir=project_path, **config())" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.UpdateLatentDimensionTask.insert1({\n", + " **key,\n", + " \"latent_dim\": 5}, skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_task_id

\n", + " \n", + "
\n", + "

latent_dim

\n", + " \n", + "
subject12021-06-02 14:04:221115
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pca_task_id *latent_dim \n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 1 5 \n", + " (Total: 1)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpms_pca.UpdateLatentDimensionTask()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.UpdateLatentDimension.populate(key)" + ] } ], "metadata": { From dc8c1530e4a3556cf6cfdb051589b47231646076 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Fri, 8 Mar 2024 12:37:57 -0600 Subject: [PATCH 41/90] code review - pipeline restructure --- element_moseq/kpms_model.py | 40 +++++-------- element_moseq/kpms_pca.py | 108 +++++++++++------------------------- 2 files changed, 48 insertions(+), 100 deletions(-) diff --git a/element_moseq/kpms_model.py b/element_moseq/kpms_model.py index 6dfe9f7..10f940c 100644 --- a/element_moseq/kpms_model.py +++ b/element_moseq/kpms_model.py @@ -99,33 +99,13 @@ def get_kpms_processed_data_dir() -> Optional[str]: # ----------------------------- Table declarations ---------------------- -@schema -class InitializationParamSet(dj.Lookup): - definition = """ - paramset_id : int - --- - num_iterations : int - kappa : int - paramset_description='' : varchar(1000) - """ - - -@schema -class FittingParamSet(dj.Lookup): - definition = """ - paramset_id : int - --- - num_iterations : int - kappa : int - paramset_description='' : varchar(1000) - """ - - @schema class PreFittingTask(dj.Manual): definition = """ - -> InitializationParamSet -> pca.PCAFitting + laten_dim : int + kappa : int + num_iterations : int --- model_name : varchar(20) task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation @@ -138,9 +118,17 @@ class PreFitting(dj.Computed): -> PreFittingTask --- model : longblob + suggested_laten_dim: int + suggested_kappa: int + suggested_num_iterations: int """ def make(self, key): + # latent_dim = (PreFittingTask & key).fetch1("latent_dim") + # config = load_config() + # check_config_validity(config) + # config.update(dict(latent_dim = int(latent_dim))) + # model = kpms.init_model(data, pca=pca, **config()) # model = kpms.update_hypparams(model, kappa=kappa) # model, model_name = kpms.fit_model(model, data, metadata, project_dir,ar_only=True, num_iters=num_ar_iters) @@ -150,8 +138,10 @@ def make(self, key): @schema class FullFittingTask(dj.Manual): definition = """ - -> Prefitting - -> FittingParamSet + -> pca.PCAFitting + laten_dim : int + kappa : int + num_iterations : int --- model_name : varchar(20) task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 40290ea..5b89259 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -150,14 +150,13 @@ class KeypointSet(dj.Manual): -> Session kpset_id : int --- - kpset_method : varchar(15) # deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap + -> PoseEstimationMethod kpset_config_path : varchar(255) # Path relative to root data directory where the config file is located - kpset_videos_path : varchar(255) # Path relative to root data directory where the videos and their keypoints are located + kpset_videos_dir : varchar(255) # Path relative to root data directory where the videos and their keypoints are located kpset_description='' : varchar(300) # Optional. User-entered description - """ - class VideoFiles(dj.Part): + class VideoFile(dj.Part): """IDs and file paths of each video file. Atribbutes: @@ -169,7 +168,7 @@ class VideoFiles(dj.Part): -> master video_id : int --- - video_path : varchar(255) # Filepath of each video, relative to root data directory + video_path : varchar(1000) # Filepath of each video, relative to root data directory """ @@ -188,7 +187,7 @@ class RecordingInfo(dj.Imported): """ definition = """ - -> KeypointSet.VideoFiles + -> KeypointSet --- px_height : smallint # Height in pixels px_width : smallint # Width in pixels @@ -272,6 +271,7 @@ class Bodyparts(dj.Manual): -> KeypointSet bodyparts_id : int --- + bodyparts_desc='' : varchar(1000) anterior_bodyparts : blob # List of strings of anterior bodyparts posterior_bodyparts : blob # List of strings of posterior bodyparts use_bodyparts : blob # List of strings of bodyparts to be used @@ -292,13 +292,10 @@ class PCATask(dj.Manual): """ definition = """ - -> KeypointSet -> Bodyparts - pca_task_id: int --- project_path='' : varchar(255) # KPMS's project_path in config relative to root task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation - variance_threshold : float # Variance threshold to be explained by the PCA model """ @schema @@ -380,52 +377,47 @@ def make(self, key): class PCAFitting(dj.Computed): definition = """ - -> PCATask + -> FormattedDataset --- - pca_fitting_time = NULL : datetime # Time of generation of the PCA fitting analysis + pca_fitting_time=NULL : datetime # Time of generation of the PCA fitting analysis """ def make(self, key): task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") - config = load_config(project_path, check_if_valid=True, build_indexes=False) - coordinates, confidences = (FormattedDataset & key).fetch1( - "coordinates", "confidences" - ) - - data, metadata = format_data( - **config, coordinates=coordinates, confidences=confidences - ) if task_mode == "trigger": + config = load_config(project_path, check_if_valid=True, build_indexes=False) + coordinates, confidences = (FormattedDataset & key).fetch1( + "coordinates", "confidences" + ) + + data, metadata = format_data( + **config, coordinates=coordinates, confidences=confidences + ) + pca = fit_pca(data, **config) pca_path = os.path.join(project_path, "pca_{}.p".format(key["pca_fitting_id"])) save_pca(pca, pca_path) # The model is saved - creation_time = datetime.strftime("%Y-%m-%d %H:%M:%S") - - self.insert1(**key, pca_fitting_time=creation_time) + creation_time = datetime.utcnow() + else: + creation_time = None + self.insert1(**key, pca_fitting_time=creation_time) -@schema -class LatentDimensionSet(dj.Lookup): - """ - This table is used to store the number of latent dimensions to be used in the analysis (manually inserted or computed from the variance threshold by the DimsExplainedVariance table). - """ - definition = """ - latent_dim : int - --- - latent_dim_description='' : varchar(1000) - """ + @schema class DimsExplainedVariance(dj.Computed): """ This is an optional table to compute and store the latent dimensions that explain a certain specified variance threshold. """ definition = """ - -> PCATask + -> PCAFitting + variance_threshold : float # Variance threshold to be explained by the PCA model --- variance_percentage : float dims_explained_variance : int + latent_dim_description: varchar(1000) """ def make(self, key): @@ -436,49 +428,15 @@ def make(self, key): # Percentage of variance explained by each of the selected components. # If n_components is not set then all components are stored and the sum of the ratios is equal to 1.0. if cs[-1] < variance_threshold: - dims_explained_variance = len(cs) - variance_percentage = cs[-1]*100 - LatentDimensionSet.insert1(dict(latent_dim = dims_explained_variance, - latent_dim_description= (f"All components together only explain {cs[-1]*100}% of variance."))) - + dims_explained_variance = len(cs) + variance_percentage = cs[-1]*100 + latent_dim_description= f"All components together only explain {cs[-1]*100}% of variance." else: - dims_explained_variance = (cs>variance_threshold).nonzero()[0].min()+1 - variance_percentage = variance_threshold*100 - LatentDimensionSet.insert1(dict(latent_dim= dims_explained_variance, - latent_dim_description= (f">={variance_threshold*100}% of variance exlained by {(cs>variance_threshold).nonzero()[0].min()+1} components."))) + dims_explained_variance = (cs>variance_threshold).nonzero()[0].min()+1 + variance_percentage = variance_threshold*100 + latent_dim_description= f">={variance_threshold*100}% of variance exlained by {(cs>variance_threshold).nonzero()[0].min()+1} components." self.insert1(dict(**key, variance_percentage = variance_percentage, - dims_explained_variance=dims_explained_variance)) - - -@schema -class UpdateLatentDimensionTask(dj.Manual): - """ - This table allows the user to choose between the manual or computed latent dimension from the LatentDimension table for a PCA model. - """ - definition = """ - -> PCATask - latent_dim : int - """ - -@schema -class UpdateLatentDimension(dj.Computed): - """ - This table updates the chosen latent dimension in the UpdateLatentDimensionTask in the `dj_config.yml` file. - """ - definition=""" - ->UpdateLatentDimensionTask - """ - - def make(self, key): - project_path = (PCATask & key).fetch1("project_path") - latent_dim = (UpdateLatentDimensionTask & key).fetch1("latent_dim") - - # Update the `dj_config.yml` with a possible new latent_dir - config_path = os.path.join(project_path, "dj_config.yml") - with open(config_path, "r") as stream: - config = yaml.safe_load(stream) - check_config_validity(config) - config.update(dict(latent_dim = int(latent_dim))) - generate_dj_config(project_path, **config) + dims_explained_variance=dims_explained_variance, + latent_dim_description=latent_dim_description)) From 4a3294a1d2af2b101559eedd73cfdc5ff0922da2 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 20:05:56 +0100 Subject: [PATCH 42/90] revert update on dockerfile-> will update it later --- .devcontainer/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index e74176f..1b55788 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -32,9 +32,8 @@ COPY ./ /tmp/element-moseq/ RUN \ # pipeline dependencies apt-get update && \ - apt-get install gcc g++ ffmpeg -y && \ - pip install "jax[cpu]==0.3.22" -f https://storage.googleapis.com/jax-releases/jax_releases.html && \ - pip install --no-cache-dir -e /tmp/element-moseq[elements,kpms_default] && \ + apt-get install -y gcc ffmpeg graphviz && \ + pip install --no-cache-dir -e /tmp/element-moseq[elements] && \ # clean up rm -rf /tmp/element-moseq/ && \ apt-get clean From 47087f2cde9cd38493a49c27896f66147491b2dd Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 21:24:14 +0100 Subject: [PATCH 43/90] from 'format' to 'format_method' --- element_moseq/kpms_pca.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 5b89259..6174212 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -109,18 +109,19 @@ def get_kpms_processed_data_dir() -> Optional[str]: # ----------------------------- Table declarations ---------------------- + @schema class PoseEstimationMethod(dj.Lookup): """Table for storing the pose estimation method used to obtain the keypoints data. Attributes: - format (str) : Pose estimation method. + format_method (str) : Pose estimation method. pose_estimation_desc (str) : Pose estimation method description. """ definition = """ # Parameters used to obtain the keypoints data based on a specific pose estimation method. - format : char(15) # deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap, + format_method : char(15) # deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap, --- pose_estimation_desc : varchar(1000) # Optional. Pose estimation method description """ @@ -337,10 +338,8 @@ def make(self, key): ) project_path = (PCATask & key).fetch1("project_path") task_mode = (PCATask & key).fetch1("task_mode") - method = (KeypointSet & key).fetch1("kpset_method") - format = (PoseEstimationMethod & {'format':method}).fetch1("format") - kpset_config_path, kpset_videos_path = (KeypointSet & key).fetch1("kpset_config_path","kpset_videos_path") - + format_method = (KeypointSet & key).fetch1("format_method") + kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( if task_mode == "trigger": config = setup_project( project_path, deeplabcut_config=kpset_config_path @@ -360,7 +359,7 @@ def make(self, key): # load keypoints data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap coordinates, confidences, formatted_bodyparts = load_keypoints( - filepath_pattern=kpset_videos_path, format=format + filepath_pattern=kpset_videos_dir, format=format_method ) self.insert1( From 15bbe27e1c790bef75997afe7c2756596ee9a48b Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 21:27:15 +0100 Subject: [PATCH 44/90] `project_path` to `project_dir` for consistency --- element_moseq/kpms_pca.py | 44 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 6174212..7815ed2 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -142,8 +142,8 @@ class KeypointSet(dj.Manual): Attributes: kpset_id (int): Unique ID for each keypoint set. - kpset_config_path (str): Path relative to root data directory where the config file is located. - kpset_videos_path (str): Path relative to root data directory where the videos and their keypoints are located. + kpset_config_dir (str): Path relative to root data directory where the config file is located. + kpset_videos_dir (str): Path relative to root data directory where the videos and their keypoints are located. kpset_description (str): Optional. User-entered description. """ @@ -152,9 +152,9 @@ class KeypointSet(dj.Manual): kpset_id : int --- -> PoseEstimationMethod - kpset_config_path : varchar(255) # Path relative to root data directory where the config file is located + kpset_config_dir : varchar(255) # Path relative to root data directory where the config file is located kpset_videos_dir : varchar(255) # Path relative to root data directory where the videos and their keypoints are located - kpset_description='' : varchar(300) # Optional. User-entered description + kpset_desc='' : varchar(300) # Optional. User-entered description """ class VideoFile(dj.Part): @@ -288,14 +288,14 @@ class PCATask(dj.Manual): KeypointSet (foreign key) : Unique ID for each keypoint set. Bodyparts (foreign key) : Unique ID for each bodypart. pca_task_id (int) : Unique ID for each PCA task. - project_path (str) : KPMS's project_path in config relative to root + output_dir (str) : KPMS's output directory in config relative to root task_mode (str) : 'load': load computed analysis results, 'trigger': trigger computation """ definition = """ -> Bodyparts --- - project_path='' : varchar(255) # KPMS's project_path in config relative to root + output_dir='' : varchar(255) # KPMS's output directory in config relative to root task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation """ @@ -336,7 +336,7 @@ def make(self, key): "posterior_bodyparts", "use_bodyparts", ) - project_path = (PCATask & key).fetch1("project_path") + output_dir = (PCATask & key).fetch1("output_dir") task_mode = (PCATask & key).fetch1("task_mode") format_method = (KeypointSet & key).fetch1("format_method") kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( @@ -347,15 +347,10 @@ def make(self, key): elif task_mode == "load": config_kwargs_dict = dict( - video_dir = kpset_videos_path, - anterior_bodyparts = anterior_bodyparts, - posterior_bodyparts = posterior_bodyparts, - use_bodyparts = use_bodyparts) - - # Update the config with new video_dir and bodyparts and save it as `dj_config.yml` - config = load_config(project_path, check_if_valid=True, build_indexes=False) + # ---- Build and save DLC configuration (yaml) file ---- + config = load_config(output_dir, check_if_valid=True, build_indexes=False) config.update(**config_kwargs_dict) - generate_dj_config(project_path, **config) + generate_dj_config(output_dir, **config) # load keypoints data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap coordinates, confidences, formatted_bodyparts = load_keypoints( @@ -382,11 +377,10 @@ class PCAFitting(dj.Computed): """ def make(self, key): - - task_mode, project_path = (PCATask & key).fetch1("task_mode", "project_path") + task_mode, output_dir = (PCATask & key).fetch1("task_mode", "output_dir") if task_mode == "trigger": - config = load_config(project_path, check_if_valid=True, build_indexes=False) + config = load_config(output_dir, check_if_valid=True, build_indexes=False) coordinates, confidences = (FormattedDataset & key).fetch1( "coordinates", "confidences" ) @@ -396,8 +390,10 @@ def make(self, key): ) pca = fit_pca(data, **config) - pca_path = os.path.join(project_path, "pca_{}.p".format(key["pca_fitting_id"])) - save_pca(pca, pca_path) # The model is saved + pca_path = os.path.join( + output_dir, "pca_{}.p".format(key["pca_fitting_id"]) + ) + save_pca(pca, pca_path) # The model is saved creation_time = datetime.utcnow() else: creation_time = None @@ -416,12 +412,14 @@ class DimsExplainedVariance(dj.Computed): --- variance_percentage : float dims_explained_variance : int - latent_dim_description: varchar(1000) + latent_dim_desc: varchar(1000) """ def make(self, key): - variance_threshold, project_path = (PCATask & key).fetch1("variance_threshold","project_path") - pca = load_pca(project_path) + variance_threshold, output_dir = (PCATask & key).fetch1( + "variance_threshold", "output_dir" + ) + pca = load_pca(output_dir) cs = np.cumsum(pca.explained_variance_ratio_) # explained_variance_ratio_ndarray of shape (n_components,) # Percentage of variance explained by each of the selected components. From afd6c45101a4efd5db67b3620dd1bbec48090241 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 21:28:16 +0100 Subject: [PATCH 45/90] `RecordingInfo` to av. metadata for one `kpset_id` --- element_moseq/kpms_pca.py | 67 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 7815ed2..b9d9444 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -175,10 +175,10 @@ class VideoFile(dj.Part): @schema class RecordingInfo(dj.Imported): - """Automated table to store video metadata. + """Automated table to store the average metadata from the videoset associated with a kpset_id. Attributes: - KeypointSet.VideoFiles (foreign key) : Unique ID for each video. + KeypointSet (foreign key) : Unique ID for each video set. px_height (smallint) : Height in pixels. px_width (smallint) : Width in pixels. nframes (int) : Number of frames. @@ -190,18 +190,18 @@ class RecordingInfo(dj.Imported): definition = """ -> KeypointSet --- - px_height : smallint # Height in pixels - px_width : smallint # Width in pixels - nframes : int # Number of frames - fps = NULL : int # Optional. Frames per second, Hz + px_height_average : smallint # Height in pixels + px_width_average : smallint # Width in pixels + nframes_average : int # Number of frames + fps_average = NULL : int # Optional. Frames per second, Hz recording_datetime = NULL : datetime # Optional. Datetime for the start of the recording - recording_duration : float # Video duration (s) from nframes / fps + recording_duration_average : float # Video duration (s) from nframes / fps """ @property def key_source(self): """Defines order of keys for the make function when called via `populate()`""" - return KeypointSet & KeypointSet.VideoFiles + return KeypointSet & KeypointSet.VideoFile def make(self, key): """ @@ -221,39 +221,42 @@ def make(self, key): """ - file_paths, video_ids = (KeypointSet.VideoFiles & key).fetch( + file_paths, video_ids = (KeypointSet.VideoFile & key).fetch( "video_path", "video_id" ) - for fp, video_id in zip(file_paths, video_ids): - nframes = 0 - px_height, px_width, fps = None, None, None + px_height_list = [] + px_width_list = [] + nframes_list = [] + fps_list = [] + recording_duration_list = [] + for fp, video_id in zip(file_paths, video_ids): file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() cap = cv2.VideoCapture(file_path) - info = ( - int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), - int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), - int(cap.get(cv2.CAP_PROP_FPS)), - ) - if px_height is not None: - assert (px_height, px_width, fps) == info - px_height, px_width, fps = info - nframes += int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + px_height_list.append(int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + px_width_list.append(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))) + fps_list.append(int(cap.get(cv2.CAP_PROP_FPS))) + nframes_list.append(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))) cap.release() - self.insert1( - { - **key, - "video_id": video_id, - "px_height": px_height, - "px_width": px_width, - "nframes": nframes, - "fps": fps, - "recording_duration": nframes / fps, - } - ) + px_height_average = int(np.mean(px_height_list)) + px_width_average = int(np.mean(px_width_list)) + fps_average = int(np.mean(fps_list)) + nframes_average = int(np.mean(nframes_list)) + recording_duration_average = int(np.mean(nframes_list) / np.mean(fps_list)) + + self.insert1( + { + **key, + "px_height_average": px_height_average, + "px_width_average": px_width_average, + "nframes_average": nframes_average, + "fps_average": fps_average, + "recording_duration_average": recording_duration_average, + } + ) @schema From f9c0b5c64a1f34931914cca9bf5ee2538c3a341a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 21:29:49 +0100 Subject: [PATCH 46/90] delete unused dependencies in `kpms_model` --- element_moseq/kpms_model.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/element_moseq/kpms_model.py b/element_moseq/kpms_model.py index 10f940c..b81cb9d 100644 --- a/element_moseq/kpms_model.py +++ b/element_moseq/kpms_model.py @@ -1,13 +1,10 @@ import datajoint as dj -import matplotlib.pyplot as plt -import cv2 from typing import Optional import inspect import importlib -import os from pathlib import Path -from element_interface.utils import find_full_path, dict_to_uuid +from element_interface.utils import find_full_path schema = dj.schema() _linking_module = None From d8137da01eb5267339af52ee8f177ba97d5d0f22 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 8 Mar 2024 21:30:45 +0100 Subject: [PATCH 47/90] markdown clarification in `tutorial_pipeline` --- notebooks/tutorial_pipeline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/tutorial_pipeline.py b/notebooks/tutorial_pipeline.py index 0ffc7af..efdcb67 100644 --- a/notebooks/tutorial_pipeline.py +++ b/notebooks/tutorial_pipeline.py @@ -89,7 +89,7 @@ class Device(dj.Lookup): ] -# Activate Keypoint-MoSeq schema ----------------------------------- +# Activate element-moseq schemas ----------------------------------- kpms_pca.activate(db_prefix + "kpms_pca", linking_module=__name__) kpms_model.activate(db_prefix + "kpms_model", linking_module=__name__) From 13e248082ad72074d28fbe303e102c079e47b3ef Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 12 Mar 2024 00:03:32 +0100 Subject: [PATCH 48/90] Update `FormattedDataset` logic --- element_moseq/kpms_pca.py | 85 ++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index b9d9444..3d9632c 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -7,22 +7,22 @@ import inspect import importlib import os -import yaml +import yaml from pathlib import Path + from element_interface.utils import find_full_path -from .readers.kpms_reader import generate_dj_config +from .readers.kpms_reader import generate_dj_config, load_dj_config from keypoint_moseq import ( - setup_project, - load_config, - load_keypoints, - format_data, - load_pca, - fit_pca, - save_pca, - check_config_validity - ) + setup_project, + load_config, + load_keypoints, + format_data, + load_pca, + fit_pca, + save_pca, +) + - schema = dj.schema() _linking_module = None @@ -302,8 +302,9 @@ class PCATask(dj.Manual): task_mode='load' : enum('load', 'trigger') # 'load': load computed analysis results, 'trigger': trigger computation """ + @schema -class FormattedDataset(dj.Imported): # --> TO-DO: change name for a more intuitive option +class FormattedDataset(dj.Imported): """ Table for storing the formatted dataset and update the config.yml by creating a new dj_config.yml in the project path (output_dir) """ @@ -318,8 +319,8 @@ class FormattedDataset(dj.Imported): # --> TO-DO: change name for a more intuiti def make(self, key): """ - Make function to format keypoint coordinates and confidences for inference. - + Make function to generate/update dj_config.yml and to format keypoint coordinates and confidences for inference. + Args: key (dict): Primary key from the PCATask table. @@ -327,45 +328,71 @@ def make(self, key): dict: Primary key and attributes for the PCATask table. Raises: - + High-Level Logic: - + """ anterior_bodyparts, posterior_bodyparts, use_bodyparts = ( - Bodyparts & key + Bodyparts & key ).fetch1( "anterior_bodyparts", "posterior_bodyparts", "use_bodyparts", ) - output_dir = (PCATask & key).fetch1("output_dir") - task_mode = (PCATask & key).fetch1("task_mode") - format_method = (KeypointSet & key).fetch1("format_method") - kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( + output_dir, task_mode = (PCATask & key).fetch1("output_dir", "task_mode") + format_method, kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( + "format_method", "kpset_config_dir", "kpset_videos_dir" + ) + if task_mode == "trigger": - config = setup_project( - project_path, deeplabcut_config=kpset_config_path - ) + # create an output_dir if it does not exist, and create a config file with the default values from the pose estimation config + setup_project( + output_dir, deeplabcut_config=kpset_config_dir + "/config.yaml" + ) # creates KPMS default config file from dlc data + config = load_config(output_dir, check_if_valid=True, build_indexes=False) + + # update the config dict with the video_dir and bodyparts used in the pipeline + config_kwargs_dict = dict( + video_dir=kpset_videos_dir, + anterior_bodyparts=anterior_bodyparts, + posterior_bodyparts=posterior_bodyparts, + use_bodyparts=use_bodyparts, + ) + config.update(**config_kwargs_dict) + + # save the updated config dict to a different file named `dj_config.yml` + generate_dj_config(output_dir, **config) elif task_mode == "load": + config = load_dj_config(output_dir) + + # update the config dict with the video_dir and bodyparts used in the pipeline config_kwargs_dict = dict( - # ---- Build and save DLC configuration (yaml) file ---- - config = load_config(output_dir, check_if_valid=True, build_indexes=False) + video_dir=kpset_videos_dir, + anterior_bodyparts=anterior_bodyparts, + posterior_bodyparts=posterior_bodyparts, + use_bodyparts=use_bodyparts, + ) config.update(**config_kwargs_dict) + + # update the updated config dict to the file `dj_config.yml` generate_dj_config(output_dir, **config) + else: + raise ValueError("task_mode should be either 'load' or 'trigger'") + # load keypoints data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap coordinates, confidences, formatted_bodyparts = load_keypoints( filepath_pattern=kpset_videos_dir, format=format_method ) - + self.insert1( dict( **key, coordinates=coordinates, confidences=confidences, - formatted_bodyparts=formatted_bodyparts + formatted_bodyparts=formatted_bodyparts, ) ) From 53edbcba4ac333c8f00fc4a4e7b39954d4372fb1 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 12 Mar 2024 00:04:25 +0100 Subject: [PATCH 49/90] Update `PCAFitting` computation logic --- element_moseq/kpms_pca.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 3d9632c..5bbd1a1 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -399,7 +399,6 @@ def make(self, key): @schema class PCAFitting(dj.Computed): - definition = """ -> FormattedDataset --- @@ -410,7 +409,7 @@ def make(self, key): task_mode, output_dir = (PCATask & key).fetch1("task_mode", "output_dir") if task_mode == "trigger": - config = load_config(output_dir, check_if_valid=True, build_indexes=False) + config = load_dj_config(output_dir, check_if_valid=True, build_indexes=True) coordinates, confidences = (FormattedDataset & key).fetch1( "coordinates", "confidences" ) @@ -419,18 +418,22 @@ def make(self, key): **config, coordinates=coordinates, confidences=confidences ) - pca = fit_pca(data, **config) - pca_path = os.path.join( - output_dir, "pca_{}.p".format(key["pca_fitting_id"]) - ) - save_pca(pca, pca_path) # The model is saved + pca = fit_pca(**data, **config) + + # save the pca model to a file + pca_path = os.path.join(output_dir, "pca.p") + save_pca( + pca, output_dir + ) # `pca.p` as the first pca model stored in the output_dir + creation_time = datetime.utcnow() + else: creation_time = None - self.insert1(**key, pca_fitting_time=creation_time) + self.insert1(dict(**key, pca_fitting_time=creation_time)) + - @schema class DimsExplainedVariance(dj.Computed): """ From 8a8139d8d038f4677a93adb449d269cd31f4a447 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 12 Mar 2024 00:05:11 +0100 Subject: [PATCH 50/90] Update `DimsExplainedVariance` computation logic --- element_moseq/kpms_pca.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 5bbd1a1..6ad2da2 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -439,34 +439,40 @@ class DimsExplainedVariance(dj.Computed): """ This is an optional table to compute and store the latent dimensions that explain a certain specified variance threshold. """ + definition = """ -> PCAFitting - variance_threshold : float # Variance threshold to be explained by the PCA model --- variance_percentage : float dims_explained_variance : int latent_dim_desc: varchar(1000) """ - + def make(self, key): - variance_threshold, output_dir = (PCATask & key).fetch1( - "variance_threshold", "output_dir" - ) + output_dir = (PCATask & key).fetch1("output_dir") + variance_threshold = 0.90 + pca = load_pca(output_dir) cs = np.cumsum(pca.explained_variance_ratio_) # explained_variance_ratio_ndarray of shape (n_components,) # Percentage of variance explained by each of the selected components. # If n_components is not set then all components are stored and the sum of the ratios is equal to 1.0. - if cs[-1] < variance_threshold: + if cs[-1] < variance_threshold: dims_explained_variance = len(cs) - variance_percentage = cs[-1]*100 - latent_dim_description= f"All components together only explain {cs[-1]*100}% of variance." + variance_percentage = cs[-1] * 100 + latent_dim_desc = ( + f"All components together only explain {cs[-1]*100}% of variance." + ) else: - dims_explained_variance = (cs>variance_threshold).nonzero()[0].min()+1 - variance_percentage = variance_threshold*100 - latent_dim_description= f">={variance_threshold*100}% of variance exlained by {(cs>variance_threshold).nonzero()[0].min()+1} components." - - self.insert1(dict(**key, - variance_percentage = variance_percentage, - dims_explained_variance=dims_explained_variance, - latent_dim_description=latent_dim_description)) + dims_explained_variance = (cs > variance_threshold).nonzero()[0].min() + 1 + variance_percentage = variance_threshold * 100 + latent_dim_desc = f">={variance_threshold*100}% of variance exlained by {(cs>variance_threshold).nonzero()[0].min()+1} components." + + self.insert1( + dict( + **key, + variance_percentage=variance_percentage, + dims_explained_variance=dims_explained_variance, + latent_dim_desc=latent_dim_desc, + ) + ) From fd2ccca1dccd274388ba19c14cb1336e4c54ca62 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 12 Mar 2024 00:06:05 +0100 Subject: [PATCH 51/90] Add `load_dj_config` function to readers --- element_moseq/readers/kpms_reader.py | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/element_moseq/readers/kpms_reader.py b/element_moseq/readers/kpms_reader.py index 01948fd..48245d5 100644 --- a/element_moseq/readers/kpms_reader.py +++ b/element_moseq/readers/kpms_reader.py @@ -1,12 +1,15 @@ import os import logging import yaml + # from ruamel.yaml import YAML +import jax.numpy as jnp from element_interface.utils import find_root_directory, dict_to_uuid from datajoint.errors import DataJointError logger = logging.getLogger("datajoint") + def _build_yaml(sections, comments): text_blocks = [] for title, data in sections: @@ -143,3 +146,31 @@ def _update_dict(new, original): with open(os.path.join(project_dir, "dj_config.yml"), "w") as f: f.write(_build_yaml(sections, comments)) + + +def load_dj_config(output_dir, check_if_valid=True, build_indexes=True): + """ + Load a project dj_config file from output_dir + """ + from keypoint_moseq import check_config_validity + + config_path = os.path.join(output_dir, "dj_config.yml") + + with open(config_path, "r") as f: + config = yaml.safe_load(f) + + if check_if_valid: + check_config_validity(config) + + if build_indexes: + config["anterior_idxs"] = jnp.array( + [config["use_bodyparts"].index(bp) for bp in config["anterior_bodyparts"]] + ) + config["posterior_idxs"] = jnp.array( + [config["use_bodyparts"].index(bp) for bp in config["posterior_bodyparts"]] + ) + + if not "skeleton" in config or config["skeleton"] is None: + config["skeleton"] = [] + + return config From cd27d1e10424fcf42f84fcfd035c067e02403692 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 12 Mar 2024 00:15:17 +0100 Subject: [PATCH 52/90] Update notebook after testing the new`pca` logics --- notebooks/testing.ipynb | 1345 +++++++++++++++------------------------ 1 file changed, 507 insertions(+), 838 deletions(-) diff --git a/notebooks/testing.ipynb b/notebooks/testing.ipynb index e5e9e6d..2a9e65f 100644 --- a/notebooks/testing.ipynb +++ b/notebooks/testing.ipynb @@ -20,64 +20,22 @@ "source": [ "import datajoint as dj\n", "from pathlib import Path\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "dj.config.load(\"dj_local_conf.json\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dj.config" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dj.conn()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dj.list_schemas()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_pca\").drop()" + "import numpy as np\n", + "\n", + "# from keypoint_moseq import setup_project , load_config\n", + "# from element_moseq.readers.kpms_reader import load_dj_config, generate_dj_config" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "[2024-03-08 03:53:37,997][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + "[2024-03-12 00:13:11,809][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" ] }, { @@ -124,12 +82,12 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", - "
\n", + "
\n", + "
\n", "
\n", "" - ] - }, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "4734f2b1-ddd4-443b-b41a-63bdf1b717bc" - } - }, - "output_type": "display_data" - } - ], - "source": [ - "from tutorial_pipeline import lab, subject, session, kpms_pca, kpms_model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. PCA MODEL AND LATENT DIMENSIONS\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.KeypointSet\n", - "\n", - "\n", - "kpms_pca.KeypointSet\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.RecordingInfo\n", - "\n", - "\n", - "kpms_pca.RecordingInfo\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.KeypointSet->kpms_pca.RecordingInfo\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.KeypointSet.VideoFile\n", - "\n", - "\n", - "kpms_pca.KeypointSet.VideoFile\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.Bodyparts\n", - "\n", - "\n", - "kpms_pca.Bodyparts\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.KeypointSet->kpms_pca.Bodyparts\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PCATask\n", - "\n", - "\n", - "kpms_pca.PCATask\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.FormattedDataset\n", - "\n", - "\n", - "kpms_pca.FormattedDataset\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PCATask->kpms_pca.FormattedDataset\n", - "\n", - "\n", - "\n", - "\n", - "subject.Subject\n", - "\n", - "\n", - "subject.Subject\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "session.Session\n", - "\n", - "\n", - "session.Session\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "subject.Subject->session.Session\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PoseEstimationMethod\n", - "\n", - "\n", - "kpms_pca.PoseEstimationMethod\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PoseEstimationMethod->kpms_pca.KeypointSet\n", - "\n", - "\n", - "\n", - "\n", - "session.Session->kpms_pca.KeypointSet\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PCAFitting\n", - "\n", - "\n", - "kpms_pca.PCAFitting\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.FormattedDataset->kpms_pca.PCAFitting\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.DimsExplainedVariance\n", - "\n", - "\n", - "kpms_pca.DimsExplainedVariance\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.PCAFitting->kpms_pca.DimsExplainedVariance\n", - "\n", - "\n", - "\n", - "\n", - "kpms_pca.Bodyparts->kpms_pca.PCATask\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(\n", - " dj.Diagram(subject.Subject)\n", - " + dj.Diagram(session.Session)\n", - " + dj.Diagram(kpms_pca)\n", - " # + dj.Diagram(kpms_model)\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

format_method

\n", - " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", - "
\n", - "

kpset_config_dir

\n", - " Path relative to root data directory where the config file is located\n", - "
\n", - "

kpset_videos_dir

\n", - " Path relative to root data directory where the videos and their keypoints are located\n", - "
\n", - "

kpset_desc

\n", - " Optional. User-entered description\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id format_method kpset_config_d kpset_videos_d kpset_desc \n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.KeypointSet()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# Subject and Session tables\n", - "subject.Subject.insert1(\n", - " dict(\n", - " subject=\"subject1\",\n", - " sex=\"F\",\n", - " subject_birth_date=\"2020-01-01\",\n", - " subject_description=\"test\",\n", - " ),\n", - " skip_duplicates=True,\n", - ")\n", - "\n", - "# Definition of the dictionary named \"session_keys\"\n", - "session_keys = [\n", - " dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\"),\n", - " dict(subject=\"subject1\", session_datetime=\"2021-06-03 14:43:10\"),\n", - "]\n", - "\n", - "# Insert this dictionary in the Session table\n", - "session.Session.insert(session_keys, skip_duplicates=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " Parameters used to obtain the keypoints data based on a specific pose estimation method.\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

format_method

\n", - " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", - "
\n", - "

pose_estimation_desc

\n", - " Optional. Pose estimation method description\n", - "
anipose`.csv` files generated by anipose analysis
deeplabcut`.csv` and `.h5/.hdf5` files generated by DeepLabcut analysis
facemap`.h5` files generated by Facemap analysis
nwb`.nwb` files with Neurodata Without Borders (NWB) format
sleap`.slp` and `.h5/.hdf5` files generated by SLEAP analysis
sleap-anipose`.h5/.hdf5` files generated by sleap-anipose analysis
\n", - " \n", - "

Total: 6

\n", - " " - ], - "text/plain": [ - "*format_method pose_estimatio\n", - "+------------+ +------------+\n", - "anipose `.csv` files g\n", - "deeplabcut `.csv` and `.h\n", - "facemap `.h5` files ge\n", - "nwb `.nwb` files w\n", - "sleap `.slp` and `.h\n", - "sleap-anipose `.h5/.hdf5` fi\n", - " (Total: 6)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.PoseEstimationMethod()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "kpset_key = dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\", kpset_id=1)\n", - "\n", - "kpms_pca.KeypointSet.insert1(\n", - " {\n", - " **kpset_key,\n", - " \"format_method\": \"deeplabcut\",\n", - " \"kpset_config_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data\",\n", - " \"kpset_videos_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos\",\n", - " \"kpset_desc\": \"testing kpms pca schema\",\n", - " },\n", - " skip_duplicates=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

format_method

\n", - " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", - "
\n", - "

kpset_config_dir

\n", - " Path relative to root data directory where the config file is located\n", - "
\n", - "

kpset_videos_dir

\n", - " Path relative to root data directory where the videos and their keypoints are located\n", - "
\n", - "

kpset_desc

\n", - " Optional. User-entered description\n", - "
subject12021-06-02 14:04:221deeplabcut/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videostesting kpms pca schema
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id format_method kpset_config_d kpset_videos_d kpset_desc \n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 deeplabcut /Users/milagro /Users/milagro testing kpms p\n", - " (Total: 1)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.KeypointSet()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "video_files = [\n", - " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", - " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", - " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4\",\n", - "]\n", - "\n", - "kpms_pca.KeypointSet.VideoFile.insert(\n", - " (\n", - " {**kpset_key, \"video_id\": v_idx, \"video_path\": Path(f)}\n", - " for v_idx, f in enumerate(video_files)\n", - " ),\n", - " skip_duplicates=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

video_id

\n", - " \n", - "
\n", - "

video_path

\n", - " Filepath of each video, relative to root data directory\n", - "
subject12021-06-02 14:04:2210/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4
subject12021-06-02 14:04:2211/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4
subject12021-06-02 14:04:2212/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4
\n", - " \n", - "

Total: 3

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *video_id video_path \n", - "+----------+ +------------+ +----------+ +----------+ +------------+\n", - "subject1 2021-06-02 14: 1 0 /Users/milagro\n", - "subject1 2021-06-02 14: 1 1 /Users/milagro\n", - "subject1 2021-06-02 14: 1 2 /Users/milagro\n", - " (Total: 3)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.KeypointSet.VideoFile()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

px_height_average

\n", - " Height in pixels\n", - "
\n", - "

px_width_average

\n", - " Width in pixels\n", - "
\n", - "

nframes_average

\n", - " Number of frames\n", - "
\n", - "

fps_average

\n", - " Optional. Frames per second, Hz\n", - "
\n", - "

recording_datetime

\n", - " Optional. Datetime for the start of the recording\n", - "
\n", - "

recording_duration_average

\n", - " Video duration (s) from nframes / fps\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id px_height_aver px_width_avera nframes_averag fps_average recording_date recording_dura\n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.RecordingInfo()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "kpms_pca.RecordingInfo.populate()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

px_height_average

\n", - " Height in pixels\n", - "
\n", - "

px_width_average

\n", - " Width in pixels\n", - "
\n", - "

nframes_average

\n", - " Number of frames\n", - "
\n", - "

fps_average

\n", - " Optional. Frames per second, Hz\n", - "
\n", - "

recording_datetime

\n", - " Optional. Datetime for the start of the recording\n", - "
\n", - "

recording_duration_average

\n", - " Video duration (s) from nframes / fps\n", - "
subject12021-06-02 14:04:2215766409551730None3183.0
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id px_height_aver px_width_avera nframes_averag fps_average recording_date recording_dura\n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 576 640 95517 30 None 3183.0 \n", - " (Total: 1)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.RecordingInfo()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

bodyparts_desc

\n", - " \n", - "
\n", - "

anterior_bodyparts

\n", - " List of strings of anterior bodyparts\n", - "
\n", - "

posterior_bodyparts

\n", - " List of strings of posterior bodyparts\n", - "
\n", - "

use_bodyparts

\n", - " List of strings of bodyparts to be used\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id bodyparts_desc anterior_b posterior_ use_bodypa\n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.Bodyparts()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "bodypart_key = {**kpset_key, \"bodyparts_id\": 1}\n", - "kpms_pca.Bodyparts.insert1(\n", - " {\n", - " **bodypart_key,\n", - " \"anterior_bodyparts\": [\"nose\"],\n", - " \"posterior_bodyparts\": [\"spine2\"],\n", - " \"use_bodyparts\": [\n", - " \"spine4\",\n", - " \"spine3\",\n", - " \"spine2\",\n", - " \"spine1\",\n", - " \"head\",\n", - " \"nose\",\n", - " \"right ear\",\n", - " \"left ear\",\n", - " ],\n", - " },\n", - " skip_duplicates=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

bodyparts_desc

\n", - " \n", - "
\n", - "

anterior_bodyparts

\n", - " List of strings of anterior bodyparts\n", - "
\n", - "

posterior_bodyparts

\n", - " List of strings of posterior bodyparts\n", - "
\n", - "

use_bodyparts

\n", - " List of strings of bodyparts to be used\n", - "
subject12021-06-02 14:04:2211=BLOB==BLOB==BLOB=
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id bodyparts_desc anterior_b posterior_ use_bodypa\n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", - "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", - " (Total: 1)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.Bodyparts()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

output_dir

\n", - " KPMS's output directory in config relative to root\n", - "
\n", - "

task_mode

\n", - " 'load': load computed analysis results, 'trigger': trigger computation\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id output_dir task_mode \n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.PCATask()" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "kpms_pca.PCATask.insert1(\n", - " {\n", - " **bodypart_key,\n", - " \"output_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project2\",\n", - " \"task_mode\": \"trigger\",\n", - " },\n", - " skip_duplicates=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

output_dir

\n", - " KPMS's output directory in config relative to root\n", - "
\n", - "

task_mode

\n", - " 'load': load computed analysis results, 'trigger': trigger computation\n", - "
subject12021-06-02 14:04:2211/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project2trigger
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id output_dir task_mode \n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", - "subject1 2021-06-02 14: 1 1 /Users/milagro trigger \n", - " (Total: 1)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.PCATask()" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'subject': 'subject1',\n", - " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", - " 'kpset_id': 1,\n", - " 'bodyparts_id': 1}" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "key = (kpms_pca.PCATask & \"task_mode = 'trigger'\").fetch1(\"KEY\")\n", - "key" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

coordinates

\n", - " \n", - "
\n", - "

confidences

\n", - " \n", - "
\n", - "

formatted_bodyparts

\n", - " \n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id coordinate confidence formatted_\n", - "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.FormattedDataset()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ACTION REQUIRED: `anterior_bodyparts` contains BODYPART1 which is not\n", - " one of the options in `use_bodyparts`.\n", - "\n", - "ACTION REQUIRED: `posterior_bodyparts` contains BODYPART3 which is not\n", - " one of the options in `use_bodyparts`.\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Loading keypoints: 100%|████████████████| 10/10 [00:00<00:00, 16.01it/s]\n" - ] - } - ], - "source": [ - "kpms_pca.FormattedDataset.populate()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

coordinates

\n", - " \n", - "
\n", - "

confidences

\n", - " \n", - "
\n", - "

formatted_bodyparts

\n", - " \n", - "
subject12021-06-02 14:04:2211=BLOB==BLOB==BLOB=
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id coordinate confidence formatted_\n", - "+----------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", - "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", - " (Total: 1)" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.FormattedDataset()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

pca_fitting_time

\n", - " Time of generation of the PCA fitting analysis\n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", - "+---------+ +------------+ +----------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.PCAFitting()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "kpms_pca.PCAFitting.populate()" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

pca_fitting_time

\n", - " Time of generation of the PCA fitting analysis\n", - "
subject12021-06-02 14:04:22112024-03-11 23:13:55
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", - "+----------+ +------------+ +----------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 1 2024-03-11 23:\n", - " (Total: 1)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.PCAFitting()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

variance_percentage

\n", - " \n", - "
\n", - "

dims_explained_variance

\n", - " \n", - "
\n", - "

latent_dim_desc

\n", - " \n", - "
\n", - " \n", - "

Total: 0

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id variance_perce dims_explained latent_dim_des\n", - "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", - "\n", - " (Total: 0)" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.DimsExplainedVariance()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "kpms_pca.DimsExplainedVariance.populate()" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

subject

\n", - " \n", - "
\n", - "

session_datetime

\n", - " \n", - "
\n", - "

kpset_id

\n", - " \n", - "
\n", - "

bodyparts_id

\n", - " \n", - "
\n", - "

variance_percentage

\n", - " \n", - "
\n", - "

dims_explained_variance

\n", - " \n", - "
\n", - "

latent_dim_desc

\n", - " \n", - "
subject12021-06-02 14:04:221190.03>=90.0% of variance exlained by 3 components.
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*subject *session_datet *kpset_id *bodyparts_id variance_perce dims_explained latent_dim_des\n", - "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", - "subject1 2021-06-02 14: 1 1 90.0 3 >=90.0% of var\n", - " (Total: 1)" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "kpms_pca.DimsExplainedVariance()" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAADqCAYAAABUbp0NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACdLUlEQVR4nOzddXgc19XA4d8sisGSLBlky0wyM7MtM2PDadJwm6RfkzRJk6ZtkjZtoGFOA445MTMzy8wkW2wxLc/3x0qyZK0MslZrS+d9nn12d2Z29q60Z+89M3fuVVRVVRFCCCGEEEIIIYRbaDxdACGEEEIIIYQQojqTxFsIIYQQQgghhHAjSbyFEEIIIYQQQgg3ksRbCCGEEEIIIYRwI0m8hRBCCCGEEEIIN5LEWwghhBBCCCGEcCNJvIUQQgghhBBCCDeSxFsIIYQQQgghhHAjSbyFEEIIIYQQQgg3ksRbCCGEEEIIIYRwI0m83eSBBx5AURQURcFgMNC0aVPeeOMNbDZb8TaqqvLFF1/QvXt3/Pz8CAoKokuXLrz//vvk5+eXu+9nnnmGzp07YzQa6dChQxV8GiFun7ti4uDBg8yYMYPIyEi8vb1p1aoVH3zwQVV9LCEqzF0xkZaWRkxMDHXr1sVoNBIZGclTTz1FdnZ2VX00ISrEnW2nImlpadSvXx9FUcjMzHTjpxHi9rkzJor2W/I2e/bsqvhYNZbO0wWozmJiYvj2228xm80sX76cJ598Er1ez0svvQTAvffey8KFC3nllVf46KOPCAsL4+DBg7z//vtERUUxfvz4cvf90EMPsWvXLg4dOlRFn0aI2+eOmNi3bx+1a9fmxx9/JDIyku3bt/Poo4+i1Wp56qmnqvgTCnFr3BETGo2GcePG8fe//52wsDDOnDnDk08+SXp6OrNmzariTyjErXFn2wng4Ycfpl27dsTHx1fBpxHi9rkzJr799ltiYmKKnwcFBbn509RwqnCL+++/Xx03blypZUOHDlV79OihqqqqzpkzRwXUX3/9tcxrHQ6HmpmZecP3eO2119T27dtXRnGFcLuqiIkiTzzxhDpw4MDbKq8Q7laVMfHBBx+o9evXv63yCuFu7o6JTz75RO3fv7+6bt06FVAzMjIqq+hCuIU7YwJQf/nll8osrrgB6Wpehby9vbFYLAD89NNPtGjRgnHjxpXZTlEUAgMDq7p4QlQ5d8VEVlYWtWrVqrRyClFV3BETCQkJLFy4kP79+1dqWYWoCpUVE8eOHeONN97g+++/R6OR5q+4e1VmPfHkk08SGhpKt27d+Oabb1BV1S1lFk7yy1MFVFVl7dq1rFq1ikGDBgFw+vRpWrRo4eGSCeEZ7oyJ7du3M2fOHB599NHb3pcQVcUdMTFjxgx8fHyoV68eAQEBfPXVV5VVXCHcrjJjwmw2M2PGDN555x0aNGhQ2UUVokpUdj3xxhtvMHfuXNasWcOkSZN44okn+PDDDyuzyOIaco23Gy1duhQ/Pz+sVisOh4OZM2fy+uuvA8gRJVEjuTsmjhw5wrhx43jttdcYNmzYbe9PCHdzZ0y89957vPbaa5w6dYqXXnqJ5557jk8++aQSSi2E+7gjJl566SVatWrFPffcU4klFaJquKueePXVV4sfd+zYkby8PN555x2eeeaZ2y2yKIck3m40cOBAPv30UwwGA3Xr1kWnu/rnbt68OSdOnPBg6YSoeu6MiWPHjjF48GAeffRRXnnllcoorhBu586YiIiIICIigpYtW1KrVi369u3Lq6++Sp06dSqj6EK4hTtiYv369Rw+fJj58+cDV5OV0NBQXn75Zf76179WTuGFcIOqyie6d+/O3/72N8xmM0ajsVL2KUqTruZu5OvrS9OmTWnQoEGpIAGYOXMmp06dYtGiRWVep6oqWVlZVVVMIaqMu2Li6NGjDBw4kPvvv59//OMflV5uIdylquoJh8MBOLvcCnEnc0dMLFiwgIMHDxIbG0tsbGzxZRdbtmzhySefrPwPIUQlqqp6IjY2luDgYEm63UgSbw+ZOnUq06ZNY8aMGbz55pvs3buXixcvsnTpUoYMGcKGDRvKfe2ZM2eIjY0lKSmJgoKC4oqkaKAFIe5GFY2JI0eOMHDgQIYNG8Zzzz1HUlISSUlJpKamVvEnEKJyVTQmli9fzrfffsuRI0e4cOECy5Yt47HHHqN3795ERUVV7YcQohJVNCaaNGlCdHR08a1Ro0YAtGrVitq1a1flRxCiUlU0JpYsWcJXX33FkSNHOHPmDJ9++ilvvvkmTz/9dBV/gppFupp7iKIozJo1iy+++IJvvvmGf/zjH+h0Opo1a8Z9993H8OHDy33tb3/7WzZt2lT8vGPHjgCcP39eGlXirlXRmJg/fz6pqan8+OOP/Pjjj8XLGzZsyIULF6qo9EJUvorGhLe3N19++SXPPvssZrOZyMhIJk6cyIsvvljFn0CIynU7bSchqqOKxoRer+fjjz/m2WefRVVVmjZtyrvvvssjjzxSxZ+gZlFUGeVLCCGEEEIIIYRwG+lqLoQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuFGVJN77Fi9mW716qIoChbfDgYFs+Pjjqnh7IYQQokY4d+4gCxf2ICNDAyikp2tYsKAn588f9nTRhBBCiBpNUVVVdecb2Gw2VnbsyOgjR8qs2x4WRtPYWGrXrevOIgghhBDVnt1uZ9GiHkycuLfMugULujNhwnY0GunoJoQQQniC22vgrfPmMdBF0g3QMzWVvV995e4iCCGEENXe1q2zGTKkbNINMHjwLrZvn1/FJRJCCCFEEbcn3qbUVHzLWacA2txcdxdBCCGEqPZMprMEBLheFxQEeXmnq7Q8QgghhLjK7Yl3s0GDOOrv73JdBhAnibcQQghx2wyGhuTluV6XkwNeXlFVWh4hhBBCXOX2xLtJdDRHRo7E7mLdamDUp5+y+p//dHcxhBBCiGqtb9/fsHZtO5frVqwAHx+fKi6REEIIIYq4fXA1gIKCAlY8/TS1ly6leXIy53x9OZ6Xx2ggDMgG1j/zDOM/+MDdRRFCVHOpqUns2fMNGk0+ISG96dIlBkVRPF0sIarEiRPbOXHicYYNO4SPD+TlwZo10Lo1mM06/P0PEBUV7eliCiGEEDVOlSTeRTLS0zl/5Ah1mzYl6+JFcgYMoIvFAoAZ+GXSJKbNmyeNZLdQcV5VL0T1tW7dB3h5vUWvXskoCiQladmwYSijR8/B3//ai18lJkT1ZLVa2bz5eyyWC1y5YqZbt3do0cK5buNGPzp0uEBQUIiLV0pMCFGaxIQQpUlM3I4qTbyvdfnUKc507syAwuu8HcDPffowfeNGtFqtp4pVjTiAi0AiYAH8gIY4+xkIUb0cObINvT6GFi1KjxuhqvDLL/czceJ3SEyImmjTps9p3/4xgoKczxcujGTMmLPo9XokJoS4lsSEEKXdOCbS0pLZvv199PoDqKoe6MegQc9gNBo9UeA7lkcTb4D0lBS2t23L6JSU4mVzWrZk3P79eHl7e7Bk1cER4Erh45JHqFoB4R4pkRDusnTpo4we/aXLdZs3R9Chw0kCAuKQmBA10a+/PsOoUR+i1zufz5rVixkztqIoR5GYEKIkaTsJUdr1Y+Ly5dMcPDiRkSOPUNRp2WqFuXOHMmnSYry8vKq8xHcqtw+udiO1atdm0LlzzGvSpHjZtBMnWNm0KVnp6R4s2d0uB2eQqEA6cBwoOhN4wUNlEsJ9dLrkctfVq5dEcvIZJCZETTV+/H+ZP39w8fNp07azcOH9SEwIUZK0nYQo7cYxsW/fXxk16mrSDaDXw7Rpa1i37t9VWdg7nscTbwAfX1/GHz/OrC5dipeNT0hgd+PGJJ4/78GS3c0yC++zgDicXUOSCpcV4LyqXojqw2arX+66uLhI6tQpGtFZYkLUTFOnrmL+fOdBbq0Whg37gXXr5iExIUSRzMJ7iQkhnDIL713HhN2ej9G4xeUrdTpQlI3uLuBd5Y5IvAH0ej0zdu/m51GjsBYuG5qVxYXWrTl74IBHy3Z30hXeBwJF11fk4jxypQByDb2oXpo3f5jY2LIDRtlscOXKCPz8AguXSEyImkmr1RITs581a5yx4O8PzZt/wsGDJ5GYEAKk7STEta4fE3Y76PWmcl+t0RS4t3h3mTsm8QZQFIUZS5ey+Le/Ja9wWU+Tifxu3Ti4apVHy3b3CcNZQShARInliUAIVwNJiOqhefNO5OW9x6pVTSicLIHjx2HBAtDpgpCYEAL8/AJo1WoP+/c7L/aOjAR4mUuXbCW2kpioCS6cPMnyt//Kijf/wvG9uz1dnDuE1BNClHb9mDAYfMjPb1fuq63W9u4t3l3mjkq8i0z68ks2v/Za8WX8bW02/EeMYNv333u0XHcXHc5BDzRAEFA0sIEdqOWhMgnhXr1730u/fofZtOlz/vnPFuh0MG0aBAd/hN2uIDEhBNSv3wydbilxcc4L8tq3t3Py5ItkZ9sLt5CYqM5UVeWXV/5I9sRujPz6dUZ8+zd09wxgzuP3Y7fbb7yDak3aTkKUduOYCA//HSdPXjtlK6xdW5d27Z6uklLeLTw+qvn1bP7iC6Iee4wGhUVMBg6+/TbDXnjBswW7qxRdi5EEXMYZNAFAZ2QePlGdJSdfxmyOpEED5/OVK98kJuYlJCaEcFq//r907vx7Aguvwpg/vw7jx3+ATheCxET1teF/X9HuH48RopZOsk0OWPvb1xj90uueKdgdReoJIUq7fkzs2jWH5OSPCQ3dgqpCejrEx8fw2GMrPFfkO9AdnXgD7Fu8GJ+JE2lVeBQ2G1j/zDOM/+ADzxbsLpCVlcGWLe+j0+1FVbVAIwYOHIWXlwFog8xJKaq7uXMHMHXqJgDWrAlg8OAMNJqSHX324bxOCSQmRE20cOHvGDv2C3SFPWh//rkz06e/g6IoSExUT0unj2T0PteN4R8s3vgOHoVvy7aEdOxGw/adCA0LK/w+1FRSTwhRmuuYUFWVH364j3HjfiQwEJYurcPo0QmeKuQd6Y5PvAFO7txJdv/+dC28cNMM/DJpEtPmzavhlUH5kpMvsWPHeMaO3U9RnmG1wrx5HRk//k18fEKALsiRW1GdXbp0Gp2uOXXqgMMBGzd+xKBBT5bYIh04VPjYF4kJUdOoqsrs2QOYMWMz4ByMcMmSsUyY8CwSE9XTyqGdibmw3/W6PBjuQ/G0QFl2uODQkOLlT16t2tjrRmFs2orAdp2o26UHDRo1Rl80OfxNyM3NZetPn0NGMtqIKPrNeBij0XjjF3rUnVFPxO7ZSOKplahoadZpCs1adajyMgjhVH5MnDlziHr12uPtDfHx4OeXQWBgkGeKeQe6KxJvgPjTpzndqRMDcp1zxzmAn/v0YfrGjWi1MsrktRYvfoSxY78qs9zhgOXL72P06AcpmvheiOps3rzuTJniHDho+fIQRoxIveaA3QGc02SAxISoiWw2G4sWNWXSpIsAZGXB/v3PMHDgBCQmqhdVVfkiOpLfWeJdrl+aB6N9b25fNhUu2iBB50WWfwjm8PpoGzXDt1U7anfuQaO27QkIuHrdZ+y65SR/8DSDLefQacBkh9V+0bT485e06NyjMj6eG3munrBarcz/+F56h/xCg1DnCajjCb4csz/ExEc+kBNQwkPKj4mNG30ZMCAfgDVr3mHo0D9WeenuVHdN4g2QnpLC9rZtGZ2SUrzsn5F1aNm/G8bsdKwRkdSfej8dBw/zYCnvDMuXN2PkyDPlrGvHyJEfAN5AN+RshqjOzp49SFBQB0JCnGfzdu78H3363Fdii0wgtvCxxISombKzM9i3ryEDBzq7D168CNnZ/6Zt2z5ITFQPVquVeX370mDvLhrVg3qG0uuzHPBV/Y5EeRswJl8mMCeNujYTDXWgq8C/P9UOF1UdaT4BpAfVRmuNY2pofpntFgZ0YfysXddcBnSnyaSonsjPV9i8eS9wEbs9lB49HickxH3dz5f88DLDA9/EcE3HgoxcDQeMnzBo7O/c9t5ClC+T8tpO8+cPZPLkjYWPOzF58r4qL92d6q6aF6FW7doMOneOee3bM+XsWRYZ4QFNIuE7Fzk3OAanti5h43P/YsDDj3m2sB6kqioazfXm1CuaNqYA5yAJdaqiWEJ4RJMm7Zk3ry1TphxGp4P09BeBkol3UOEtE4kJUVMFBATTpMkuDh5sR/v2Nho2hP37XyQ+/jvq1WuAxMTdLSs9nXUdOzIzLg6AFUlwLERhsI+KAuz1CeHyqHt47s33Sp1BtVqtXDx3loR9u8g6tB/zmeNoEy7gm55CbVMOjbQOAsrJl8O0EIYNLOmsik9nUEvX2w1I38uO5b/Qe/SkSv7UlSkICOLEiW2cOfMvhg+PQ6939iLctOkLfHzepXv3qW55ZyV1OYbQssuD/Rzkn/sVkMRbeEIQ5bWdwsMfADYCEBl5GIfDcYcfWKs6d1XiDeDj68v448f5sHMnBqYfIfyaI4DNLTnEffkOBTPvx9vb2zOF9DBFUbBa2+EcdbAsq7VTiWcXcXYPkYAQ1Vd09GdkZ/cmIACGD09k9+5f6NZtQoktGuHsNgUSE6KmatCgFWlpvxIfP5p69aBTJxurVz9GYOAv+PlJTNytLp08yamuXZmYk1O8LCeqOb1Wr2b18kVgt9N+7CS6Fk0BUYJer6dJi5Y0adESZt5fap2qqlxJTWXvwf2kHdhN3onDcPEsxtQEauVmEKlaqF/YynRoQV/O16eWDvb/+hO9Rk28o7tNOxwNOX58BhMmxBUv02hg4MB41q37I1lZwyr9WlZVVdHZU8pdf711Qrif67ZTt27TOXHiQVq2VOnSxcqhQxvo0GGw54p5B7kra1G9Xk/jKWOJLiev7nflHFvnzqraQt1h6tV7jGPHAsss37BBQ8uWz3J1PkoTzqNUQlRfrVr1Ys2a5gAYjRAf/+w1WwQiMSEEdOw4iuPH36FwOBWGDctl+fIHsNtdXxMs7myH1qzhStu2DC5Mum3Az4MHM+nYMeo3bEjM488Q89Sz1HGRdN+IoiiE1a5Nl6ExDP/TX5j4zTwmrtvPqENJ9DxnJuRYPsfn7Wfji59wrE0/8myu9xNvgp7HfmH1wGBWffbOHTuX+M6dmxkw4KTLdQMGXGL79s8r/T1zc7JJSkkrd71V37DS31OIm+e67WQ0Gjl+vDEAWi2cPfuZR0p3J7orE28Arb2cX3BAD+x9+xUObVpfdQW6w3TqNIbc3K9YsqQfu3d7sX07LFkCwcEOUlKO4TxKVeQizuHqhKi+mjb9iPzCywuHD7/IwYNrr9lCYkIIgCFD/siKFQ9QlP9MnRrP3LmTkJi4u2z67DMChg+no9UKOKdjXfLYY8xYu7ZKBqX19vamVYeODHj4cZ5ZsJZVQZ1cbrctAzoHwnCfLIYv/hMbBwWx/P2/YrOV387zhOzsiwQHux4WSasFRblSqe8Xd/44uz5vQN0gM5m5ZddfvOJN7db3VOp7CnHrXLeddLoxxUt9fTdUbZHuYHdt4h3SayCJ5fSU32OGB01JNHloML90aciOBXO4i8aQqzTduk1m9OiNREVd5OTJFowZAx06QFranwB/oOiiITMg8+yJ6q19+6GsWuU8q+PjA2fOPHnNFhITQhSZPPkb5szpUeL5HhYtetSDJRK34tc//IF2jz9OVGHb55KisPf995nw6aceKY9er6fDX75hYa3epFqdTc9LNgP/8+9BVmR7ki1Xtx3sm8vI1a+zfXAAS95+AYvFUs5eq1ZkZDfOnfNyuS4/H/T65pX2Xvu2LSJzZTuGRGcztCNsOAjrD+lQVbDZYcPJBpzy+Rvd+0+stPcUomJct506dHiK7Gzn0i5d0khNlZ6EcJeNal6Sqqr8fO8Epu1chLbEJUE5DliVB5P9ry6zqrDaKxSvp//CwEeerJEX+B8/vp169ZzXuFoscODAXLp3HwnsKdzCAHQHZGo2UX3t3r2QDh0mYTA4p0xKSNhOq1Y9S2yRh8RE1bp48iTH5sxBsdloMGoUrbt393SRRCGr1crSpVFMmOBsSKWnw9Gjn9G3rwzmdKdyOBzMGT2aSStWUDRo+SGdDseiRXQYOdKjZQNn2233mhVkxJ0momV7OvQZAMClM6fY8frD9ErYSv1rctvtuUZSBz/K8D/9Ey8Pj90zb94YJk9eyrWXov/yS0dGj951S3Oal2fF7L/Swf46dQp78Gblwdq0h+k34e/s2zIfjdZAryEz8fPzu+33EqJyuG47rV0byJAhzux7xYq/MGLEXz1UvjuH+xLv3Fy4cgUUBcLCnKeYKpnJZGLl6y9g3LqKgMwUMsIbwNAJBDVuypV//ZlhGXH4XJNjr1P8KLj3GYa98BoGg8H1jqupBQtaMmmS8/qkRYvqM27cJeAYUDQ4R2Pg1q/zEjepCmJC3NiSJXUYM8Z55HXevHZMmXLwmi0kJqqCqqosevZZGn3zDe0Lrz896+3N3kmTmPTtt+h0d93Yn9VSRkYqhw41pH//AgDOnVMwmTbSunU/D5esmrqNeqIgP59FXbsy/dix4mWbfH1puHMnUdHR7ihtpUu4eJ6tf32EbufXE+Vdunm6J1fP5T73M+zP7+HroaQzPT2FtWsfoU2bFbRpYyU+HpYt0zF06H4aNWp7W/t2OBzM/WAi4xotwtvoXHYuSSEu7CMGjH6iEkp/l5K2012ibNtp/vyRTJ68AoCFC1szceJRTxXujuGexPvkSUhMLL2sYUNo1Mj19rfJbreTn5+Pr69vqbPZhzet5+SrzzDo8lFqXXPSaqfDQOKY+xn6t//g5+9PTXD48AYaNRqEnx+YTHDkyCK6dBmC8yiVinOQ+x7chYPd3/mqOCZE+bZs+Y5evR5Eq3XW5dnZB2ncuF2JLfKRmHC/jW+9RfQrrxDqKH3dsBlY/corjPnb3zxTMFHG+fO7ycvrSXS083+1Z4+RyMiTRETIwE6V6jbqiZTLl9nTsSOjrly9znhR3br0i40lOMx9c0y7S2piAhv/+js6nFhGM5/SzdSDeVrOdJnO0Fc/IiAoyCPlW7duDvn506lfH3x9ISoqD4Oh4glhXm4OS9/vxrTOJ4qX7TptxL/falp3qMEHuSqp7XTp3DkSzpyhaceOhNyF8XB3KNt22rVrCd27Oy+HiI3VEh1tqvEH1Ss/8U5KghMnwGZz3nS6olEnoF07qFXrxvu4WRYLpKWAww6BtcDPdQJ99vBB9r/wOD2P7yie2qLIYZuWE/3GMfCfHxMaEVF5ZbtDLVzYlIkTzwLwyy9RTJhwHjjB1VGcowpvotLcgTFRk6mqysqVoYwYkQ7A3LndmDp11zVbSUy4VVISyyZMYNTOnS5X/2gw4NW1K9qGDfFu3pygtm0Jb9+eepGRt9xT6eyB/Rz/5kN0qYnYatej8b2P0rqrdGe/VXv3fkTduk9Tt67z+cqVtejXLw4fH1/PFqy6uI164vSePaT260cvk6l42azOnZm8bRsGo7HsC+6ieiL9Sirr33iC1ocW0tqn9EG6Y/kajrWdwKDXPqVWaNUmU6qqsm+fni5dnCMQxsbOokOHGRXa1+WLpzg6uzvD22UWL1saW5tuD+6jdkT9yiju3ekmYsJkMrHlh2+wX74AoeH0efB3pbrgJ5w7x84//IEmGzYQmZvL8fBwEkeOZPQnn+DlVeKahgrGhMPhwGKxYDQa7+ip8KpO6baTzVafo0e9aN/eGSe7dv1C9+7j3VoCa+FgkpVx2Yc7VH7iHRsLmZmQlgaXLl1drtU6u4i0aAEGA+j1rm9F6250HXZyAlw4jfPISqFaYdC0NWUuvimUGHeRrX96nPa7VtFcV/oH/LxNYU/7/vR853Mim1XeABl3mtjYVTRvHoOPj3MwkFOnVtKhQz9gN1ePUnXHOTa8qBR3cEzcLeIvnufY3i3UbdSSNp263fb+1q//iDYtn2b3AlDjQVGbokT0otXwP9CkdUegAIkJN4qNZeX06cScdD01zypgKKVH/7QC8UCyXk+mvz/5oaHY69VDFxWFb8uWBLdrR53oaCLq1CkesXn7Fx/h9cGrdLJkFu/nmM6X5GffZuCjT7npw1VXBaxa9Qx9+nyFb2GuPWdOS6ZMOVojx02pdBWsJ3YtXUrgo4/SsrDnSAGwZMoUpsyZ4zoRuEvriezMTNb8/Wma7vmZ9r6lpxs7na9woPkIBrz+BbXr1quyMi1a1KDwkj1YunQSo0f/zK3WE/t3LEVzYAIdGjlHcHc4YM7Bzkx8bitGL9cDudUYN4iJkzYzJz/8O8PTzmBUwKbC2lpRRLzwTzoMG4FNo+HXQYOYvHt3qd3agYX33MOUH35wLqhATOTm5LDmXy9gPLQOn4J0csKa4D1oBoMfeqaGJ+Bl204LF3Zg4kTn5S/z549g8uTlbnnnY7FbOLP9P3gXOP/fBd7daNb7j7Rq38ct71dRlZ94797tzOiSk8t2D/Hzg6ZNb24/Wq3r5EOvB5sVzhxxJiKqA4xeVxOTyMZQ9/rXZGamp7P+z78navVsOmlLT1eRbIfNjToS/ebHtOre0/UO7HbITIa8LNDqIDgCfO7cI8bXcp7pvgjAwoVNmDjxDHAKSAC7DcwBQEMw1gJtJScb9gIwJ4LdBDo/MNYBTTVPaKowJg4eOUrioaPg70+vcaMI8PcvNyZyc3JY99Zr6HatR5ubjbVJKyKm/5auYyfc+me02zEnx7H2y3dRTu5EY7NgbRBN40m/o03PineTy8vNZcU/H6VJ/Ara+WRyyWRgv19vOv7ufRq1anfjHZQjKf4S6/8ZxcxmpQ/AbU1pSO2pc2nethuVERNZmRlsXvQW2qwtaLBg9elEdP9naNSsxLWANTQmlj3/PKO2bnW5eikwugK7zQcuA6lGIym+vtgNWUz2Kzsn8EavEKLXHSO0du0KvMuNXUlJYc+C/0FeJq269iaqabNKryfOnTjKyfWzURw2wjsMpWOfQZW27/KdYu7cJ5g8eV3xccDPPhlIw8DRgELXoTMJrR1++29TRTFxaN8WEs5sRWMIos/w+/Hx5LWjFagnVn7/PR2+/ZaivnqpwJ5772XkE0+4pe102yqh7ZSXm8vqt54jcut3dPG1llp3oUBhd9RA+rz+FbXC67Bx9qcQtw+HVo9/+xh6j5xSqQeJFiwYz6RJi5yP5zdj0sgfuZV6YuXcf9DW8gr1QpzPc/JhVfL9THr827LJWw2tJ8qLCYePD4u+fZcJV8oevJ1r98ParBeXz5zhqXPncNUn56C/P8GLF9OgQeQtx4TdbmfOb0cwPWkNmhL/pjS7lp3DX2HUc6/f/Gd0Uz6Rn5/PlnlfoGbGowTVp9/UR/GusoEJS7edlq+ZTdce77FnOVw6o6dxh/fpN/ZhjK5649yKEjFx6vQZ0nc+SY9Gl0ttsvN8fWr1W0Dz6Ns/YVNZKj/xLroeIyvLebNanV1E7HYIDYXKaOikxENGKlhMkFT4Rw7wh4g64OMLzdsWdkkpvOlK3Gu0xc8LLBbW/OcfBC38hn5KQam3yHbAmrCmNHztXbqMuDoXHVYLnIsFc37pMkU0htpuqrRyUiHzEljyQGeEwHoQVPGjunv3LiY6ehxeXs4xKy5c2EB0dE/IWQzZCaAqQCtQjBDYBPwq6QiyORVyj1HqqKJGD/7tnRVJdVUFMZF78QxL3n2P3sdO0sBmxw5sDArAMHEUfWMGl4kJi8PBgj88wrTTO0tVHGf0fiQ+/y/63vOQM9G/mWtxrBZsp/Yy543nmJa1C12Jds1BTRiWJz+n64gKJPPA3JenMzl7TqkyAvya34aYF75EazdhdiiYvUIxGYMxm0yY8nOwFuRizc/Fmp+D1ZSLrSAXmzkPuzkfuymP04fW8Gynwy7f8/MTLYgacC8GL38Myjm8VBNGoy8+Pu3w9QvEN6I1PrWb3rABl52VyarPRzA5emepg+ZbzkYRPmCOsyKowTGx4+efiXzzTepbSzees4Gv27alQVAQJCdjyMjALyeHELOZeqpKyE2+xVod9GsIBhcnH1QV/pcDrXx05OmM5Bu9sfr4Yw8IRhMcii60Nl516uNTryGBjRpTKzKK0PAIjD4+N4yJFR/+g4AVH9JLTUZR4JDVl5ONBzLp8WfR1G162/WEqqosevdPND36OdF+zkHpLhUY2OI/jMlPvoIBS6XUE66ZUbMXMfuXPzL9vkss/gwiLkO3wlx7Z3Jt0hr9jtG/feM23sL9MZGTnc3SL39Dz9DVRNW2YLHChjNNCOzwd3oMml4p73HLbqGeUFWV+W++yci1a4uTitOKwpUXX6TnsGHlv0cltZ1KbXML9URltp1MBQWseudFQtd+Tm8/c6l1h3Ngq5cfDzfPxVA4vk+6WWGl/zim/XN+pc1hvmHDpwwc6Bz0bN0aI4Nb/YubaTs5HA7mfTiNMQ3m41N4UvtiisLZoPcYNO73ZV9Qg+uJ8mJi64UzRC94jyAX1bBFhQ25oOZDTE75u/80WKFjgBY7zpmn7So4FMV502hxaDSoOj2qRotD0aBqNKhaHacLCni4fjpBLq56WpzpRW7HkfgFhaD19UfrG4DeNwCDfxAG/yCMAcEYA4Px8Q/Ex6DHJ/kM3oq9dHviNvOJIzs2EPf14ww1nkSvBYsd1phbEvXIZ7Rp3bpS8wnXzKXyieVLjuNz8TP613V2IDBZYWVqB9o/8D2NWtz8gIQWi4WsrCyyMjPIST1OfvI+TPnpmAsyuXB8A08McT0F7JK43zDmdz9W1oe7bZWfeOfnw759zsqiJIMBunRx/kBbrc6bxXL18bW3onU2m7OVVFLiRcjOgIJ8SC38QwcHQUiosxK4hX8kgM1mZ+382ShLZzNEzS01PZlZhdXGUAIe/gP9Js9AuXIRctLJysriUlIS9epGEBwa5qyAmncFL9/CLsGK817ROL9pFe16kpUIKS66YwbVh7CbPFPqgnNU83igcLTzkVshbQVwBRz5oEQChcEY1hGMASX+DyrFFYBa4vH1ljts5MRv5OKFi9SJqE1IrQDn30brAzp/COxc4c9yx6uCmFjw2qtM2LyVa+ug/d5exE8fT+2W0ZhzsrHm5GLNzePo0YM8mRKLl4tK6werN15NWxVWBIXfY40GRaMBRQtaxfm/K1yO1cSZxMs8GXgeXxftr28zAvFv3h7FXtiItNtQHDbn88J7jcPuXOawo1HtaBwO0gostIzMprOLE2hmO8w7DX3rglHrvHnpnPfXJumurMiGEeV85VacgpgRZUPW4YA8E+SbC+8tCiarFotNi9muw+owYHUYsGPEjpHTFzP5vzGpLkN/yfmxjPntd5C1GxwlEs8aFhMrv/8e319+oXdaGgqwLyCAuHvuYcJ//4tis5X63qsWC5lpaVw+dYq0o0fJOX0aS1wcJCVhzMggIC+PMLOZ+jhnFV2ph5jrjP21Mg9ibvLy5AIHXLFDOgrZGgP5eiNmL19svv6ogcFog0MxhIYTn5tFTNwiIg2le1Ll22F162mMmDwTtWknVKMPqqKgqjjvUYp/PVVVLXOjxPIdy36m187nCTOW/j2x2mGez1iGTHoARVFQUCCwDkpYE+fzwhtQ6nl5y1wuN6VD2koslkQ+/e4vPBhoIfiakyjJuTpOtP6U/mPupyL1hKuYUDXe142JGzVjrl2/8NP7mNx4VpnY3H2+NuExm2nYuMV19+cWN1lPWPPzmTdsGNP37i3+vd9tMBDw1Ve0bNu2SttOVynO118vWU+9ADnpYLcCqnN7o/dtt50sFgur3vsLAcv/S39f5wmUX3NgXIeyL823wtZ2rzLs8ds4MFRCcnIiXl51CQyEy5chOPc1fH2bcL22U35eLos/6MP0zldHnt97xoBXj4VEdxp40zFRk+oJVzGxctcWYj55sdyXrsxznhAdmQmuvkGZwNEI6F2B4xYrgZhmrtdZHLAlHQaHul5fxOaAfIezbsi3O+sYs6rBjAYLWqxaI1atAbvOgF1nxKH3xmHwAqMPePmgePmi8fZD6+2P1tcfnW8Aer9AFC8/kn79C9PD4sq857zMpnR58A30JQ6UqaoKAXUgJKr0smvc0jJTBmRsBDJITUmhYNss+jfILbPtl8ebUK/nRKymK9hN6aiWTLBno3XkoiMPvVKAl86Mt96Kj8FGgLdKoC/4e5e98nLlXojp4vpvvfJEK2KePeZ6pQe4Z1TznBw4dw4yMpy/fCEh0LhxxaYAUFVnBVIyAYm/6LweIz8XrqQ4l/n7OYeW9PGFelHOARJu+a1Utq5aQcacbxhuScNYIlodKqxRfCno3gerOZ2I1GM0UvKIc3iTVLslQ8ZNJqB+Y6hVzgBtikJxhVKmYim8v3YZQOIhUG2Ql47zyhQgsPDId732zu5MRT/UJe9Vh+vlhfe7Dq+l4/BXMBggOxviN7xCqzrBoDkA9vOAFvTdwKseeAVDYMVHrzWbLSyb+y4h9p00DssiPsOHeFMLBsbMpFb9wkgJ6g5az87P6VZujInMK1c43L07fdPSXG7uqtvuCj8YUc5XNc7q7PERfQu9gJZrYGQT1+tO5Tkrvma3OAbTygyI6Vr++lUXYXgFv5YVSbxv+T32wIhyyr/2SAj9p3+G3la6WxRab/AtbPTXkJjIjItj55o1qEYj7R9+mLotW976vgpjQrVYSE1IIOHYMY4snE+HTbOI1jvKbJ5ohRNWGFjJPYuXamF0Y9frFiRB9yBnLBTflKuPueb5teuLHq+1wIRyrrJYdA4G1ru6Q1UtSuav3gMlkvwSTfxrty1nedGyvVaYUs7VWHOOQadr4utm4+mmt7u5zcrsLy3becalTxvX2y9NeY7R9//nJvdeyW5QT2Slp7OuY0cmxl1tVK+sVYsO+/YRERVVel9V2Ha6IVWFuEPO+6xkKCg8DRkRCQajs3vtbbadbHYHa2Z9g3bdt6j+BQwv57zErLTGzPjnQhSdoUJtp2uXbUsYQO8+zgNtu35oQffm4eW2neLj4zm87HFiOlw9DbvsQCCdx31OREQ5l2hYM6HgQullNbCeuDYm9u3YRp3HRlIXW5mX5DpgQx401kJ2EvQsWwWw2ACjI2/uQP21VqgwopyhoLKtcCgH+lTimLm3Yl0W9GoP3i5OguRZYVsi9C9xgtvVx3e5zMXCm9luRRKM7Ov69XEZkBkM7Sp+DvHq+1ynvbXiZHtG/CH29t+kkrhnTHd/f2jf3nmUqiihrChFuXp9UpHgYOfRP4sJGpf8jynQqj0EBF2tdBz2wq4ptrL3hWffipYpdht9x02CMePZt2UzF7/7mCHZlwnQOINzOHnM3rmKqc1AU9hgq08Bau4BZs8pYPqzr5TfGCj6sbYX/gLcTN1mLYCswjnxsuLAZnF+03WF3aSunAGfikV395a9WbKsFmMmpBMQAKuzv6FV+P+BWlQwO2hSgXqlj7RWwK+z/sWkluuKix0Zlo+qHmD2r3lMe6KT88yq6obK/k7ixpiIP3eOqHKSbrj1ILdz65XR9RrLegVMLiq+GwnRQkoe1HaRsKsq5FohMc959ttkB6tDwaoqWBwabGiwqhrsaLGhxa5osSs6HIoOVavjXFYWI8h2+b4XcrxZut8fLQXoNDYMOgtGvQODTsXbAD5G8PW6el8RGsWB49qj+GU+ZM2IiaDoaGJGjaqUmFD0emo3a0btZs3oMHo0c6Yk0urQulK9mFQV1rcfwJAvZnM8MYGsc6fJvXgOU8IlLMkJONJS0GSmo8vLwqsgD1+riUC7lRCNSqjW+X0uz/V63AboIMJAqUsxKuJ6TWx/vbPnR1H3Wnc6mV/+ukADNKu6Ma5uSVo2tLzOQNE6a2L5K93tOvXE5VOnONm1KxOzr/5uzW3WjFH79uHrakrUKmw7Fd8XvUZ18YNffNSnxLkebeHnc7V9qdfduO2kA0ZMnEL2sJHseXciYHG5XVDOObb/sSuJfq2o030s3Xr3R6+veFM45VItiuYuTjRlAKEu206x+3djP/kyMR1KDKK2tykTHv4IL+/rHOW+3t8Gakw9cW1MdBo0hHnR/Zh6ZH2Zl6xq1InRy7YDsO6//+Xg3/9O+8K4UYE19eqh+/vfOd2tG3aTCfvRA9gLcrFbrTisVuw2K3arDUdYBA6dHrvZjMNswmEx4TCbuXj2FBcuzCfKq+z/ZmmWN9q6zVhgM6OxmdDYLGjtFnQOKzqHDQN2nP3iHHgpDrw14KO9eqvIgYCSrIrrpBvAV+88iWisgvqhiEZXfvswMgiOp91c4p1vgqx85y3PpCHfonX2OLQbsKl6zieaGEGey9faAnpX/AO4gXsnU6uk62hc7rd1B4g7C+lXABV8/aF+I2fFAVcrHfRQgev3O3fqReen/8TJndtY9coz9L0QS7oDurg4QqYo0Df/JJtPX6J/007OH0qHw1mukvdFR1KL7q9ddy3lBi005Wb/vkqJLltX74N5CpvtDXQ6GDw6gdObLtCsrh9ovEH1Bm1z0PqCVxjog0vvq+gxSvnLFYVTJ0/Q3Hd7cdJd8m82rOUptm/bTJ/+w53vUxO4ISbqNWrE4fBwIpOTXa6P02hY5+uL1WDAZjBgNxo5aTfTz5GIr4uv2CZ9EP5denMCUIuO7DtKfHcdDlSHo/h7q+TncCY1kcGOFAwu9re1wBevVt04rtOj0elQtDrQOh9rtFo0OgOKVodGp0er06Et3E6j07Jy64/c53upzD63pfnQevBEAoJ8MBq06OoXHn4OaQTegTf8mx05cYyFa59k4jU/+NsSwxk07e+0aNUWci+A6TI4ToLmvDMmvHpg09QiXxNItjaMpLx88vOzMeVnYy7IwmrOwWLKxWbO5lTGdkZw2uX75xnaYQyJhuzCo/VFsaMUNpI1RomJStjv2G/m8euzjxCyZyONctO45BtMcvchjP7P5wQGBxMeHg4dOt5wV6qqkp+fT3xKChlxF8i+eI78yxcxJ8VjT0lETU9Fl5XBlZxLlNfgz7FBkqX0GeVSj4vfq/Sya89UX7lOO/xKAZzJunqGXOUmz64rV+9xsb2r5QWlL6stJd/hTHCv/v3K37Z4mxutv8EGN7veSw+nEyC0nJ8Jm64SBoe7XdfExKE1a7CPGsXgwvEQbMDcQYOYtnr1rV2vXAVtJ8BZN1ybkBtUyMlwDhRnynOuCwpzvl+dJuATUCltJ39fH/IDmgDHXRbNrkLv2lbgEBw+ROzGNzmrbURg++H0HDwKX9+S3WBct51K3Rc0pyjxdvjmgaZWmbbT6iXf0cr+PpGFvcJyC2DFxZFMf/afKEVn7Yve79q2lCEMHAVX/zcg9QSgKAp93/ua+c8/Qo/Dm6mvWkhRNWxt2ZOOb35cPHDXyP/7P04PHcqyb79Fm5aGrWFDuj31FLXr1Lm6szatXcdEUPkntua8+Ai19n9FQIks6hjBNPzTB/SefG/ZF7iKibMHsGakUpCeQl52Fqn5eRQYvDDl52P2DsRis2HNy8GWl42tIBd7QR4OUz6qOR/VXAAWM4rVhGK3oLVZ0NqtnDPl063ARC0XR2iv5MMVE8ReUbj6i1syobn62NXP6c0uu7pQ5XKmis1OmRwAYH88xKkRLDwYiKrxQ9EFoDUGoDMGY/CphZdvCD7+YfgGRBAYHExggD8R3t4oqhWyYwuL7CxzypVsFq34D2PbnikOE1WFxcc60vOeP7sqpce4p6t5VbLbnV9oN8/XdvnMaWbdO4I/BZ8td5t5iRAe4ENaUANo0pGQboNp3m8EEUUTn96Iqwrl0n4wZYGl4GoXMG8/58AaUT2c11CVrARcVQzlHG5SVZXly8MZNSrVWf6fIpnS4znABrrGoK3lTO5rdwb9jftk2mw2ThzdR9yRReQnbsHXdpyU1DTuH1L+a1bGTyPm3g/AeAc0du5iCx58kAnffVfmGu+DwcH4rF9Psw4dSi232WzM+c04pu1bjq7E1+OYdzBZr35Mzym3MB9pXham47tZ9PfnmGo+UurrdtbhR8IDH9B3+kO3/JkATuzbwblPH2SY18niM4W7swIo6Hg//fsPqHBMzP2yN31b7WDvJjAlgY9fCxy1u9Jy2O9pFl14+YM5BxJmFTZ6bj0mUpMT2DNrOCNbHim1fP/FMHSdfqJdt6GQdxZMZQ8s4NdKYqISZWdkEH/+PBGNGhEcHHzjF1TQ1oWzaPrZA0ToSvcSMtlheZsZjHz0WZRG7VxeT13ymurr2bNmMaFzZ9LIu/TR/WwLbKszkxGjxzsX3CAmrnYdd319Odc8V1UVzDmoCXPIyUln9qw3ebShDd9rkrOMAoXNtd+m//hHy5T9pqbZyTuPYokvu9y3BRhLD0R5s9P2XLvd0q8eZFrz+WWqxn0XQwgevJnGzVrf1H6rwqbPPqPhE08QVfg/yQbW/u53TPzss9vbcRW1nYrlZcG5g2VPMvjXgkYVn6ECKNN22jj3c5pvfJ663qXjcGuiBrPNweBI17s5l61wSG2EvtMkuk17lrCIOq43LLnPDd/QZ+DDAGzepKNf1JziekIN68Tcz37L6MjZxb2jLqUqnPR7hyETn7/5zyf1xHUd3LKJxCMHqdW4GV2HxVR8Oq9biAlVVVn3w+eYdy5Fm5eBNbwxDcc+RLs+A2/+/dwQEw6Hg4VP92GydkeZdfPy2jH52bdQrKZKzydKKdF2ys3LY/13HzO2UemeRKoK83MnM+XP8yr0OV3FRFpaOtu3rkOX72xzWf2603vU84SE3Vkxcvcn3lVozfefMWDW4+hdnNVzqLDqCowIK7082wbHTXqS/Opii2xDQMf+NBowmsbNW97ctBbmPIg/iN1SgEajcf6gKBqo0wZ8b3Z83/Jt2vQVffo8glYLm9fCxT0j6NG5E81aDQaDHwQ1A2NQmdfZ7XZOHY/lwqFfyUvcjK/tOA2CrtCynlrqwOSGg9C9BcUjd5akqrAi7UVG3vvWbX+Omi43J4cl99xDz5UribJYsAEbGzTA+Npr9H3IddJrMplY8+830e5chzYvG0ujljS451HaDxp66wXIzyHr9CE2ff0uunMH0NpMmCOjCR/7CN3HTLm9z5aby5bZH6OkncXuHUL7mN9QX5cN9hJnFm8hJk4c20lYXk9CCvOvVcfeZPjYl8puaIuHnH2QHQ92DeibXzcmXImPO8P+1W+izSycTsy3M426PU105xKVsykRzAngMBWeJWkABg9dICZu25J/v0rE2k/poqShKHDC4sXBRoOY/NcP0UZE3V6X+kLrfvgAZdN79PO6iFaB3XmhJNQdxPj7Hrva6KzEeqKYLR5r+i4WzX2UicPSWPATRKvQqrDeO3IlgJMh9zPx6Q8q3vgFt8dEZkY6K76aSf+666hby4bdDhtPN8CrzRv0HnZ/pb3PrbLZbGz79VcK0tPpNHo0O955h37vv0/RoaLLisLJd99l8B/+4LEy3pb8HEi56Ew4dHoICoewyEqJiWut/fotrFu/oKPmAvkOLUd0Lak/4B5aDJnBjtW/kLXlfzTOO0zHENddtVPyYU9BOLbWo2k35TkaNXd9MCYr7RgmWxvCw53TTRO/kJDw+hQY6vHrJyOY0elQ8bb7zurRd19Ku67XGXm+PFJPVE9uiIm40yfY/eFj9DZto46XjYQCHdt9+tDj8fepb8ircNvppl3TdvrfnGUEpC2hbyiE+sKxNF+O6IYT8/TXBAQGVfx97tKYkMT7FuTn57N1eluG2c6VWbfqCjT3hkY30evH4oAT+RouG0PJr9MSn+ie1Os7iladu2MwlJ6fYMPPn5C34yeM6aexGgKwNurL0GfexSewcs7aqKrKT98F430hi656aBAIJ9N8OKQMYPCT31IrtDYOh4PTJw5x7tCv5CVsxsdylAZBqbSqr96wl2huAazcB5NdzF+/40wojSYdIKLudS64E7fk0JYtxG/ahBIQQO8HH8Tf1bV/1YHd5hw1pWhKjIA6oL+5fpELvmjCpEHOGF6+JYQRD6SWTRJUG5h2gVp4xkTTArSBN9XzQ4jES3Ec+PUnFIeVJgPH0Lzdjbuz36rc3Fy2L5mFw2qm45CJzm7zFYyJm6LaUAt28vM3jzAz5gTgPEH06cIRNInoBii06D2FxuUkKHcaVVXZt2MVV+J2gTaA3jG/9ejv5e7580l94w36Hz6ML7BJryfZamUyoAUO6XTYf/2VjqNGeayMdxurqYCjW1fhpdfQok1blMC6pWLCarWyZ/UCElZ9RkTqTnqEmF2OwZBrgR1ZgWQ3HEiz8X+gbfd+zjqjsJ7YuHMI9cJNnDkCyenPMXzM0xz4vgsjO1wde2XFwVq0v2cPdeuXM/qiEJVIVVX2bV5L6vlj1G7chk59Bzu/s7fRdrq5Ny7bdvrlh96MH3Ce3Xth7c6WTHtsDk1b3WYvl7uYJN63aPvCH/H66lk6caV42RFHIGn3/JPomEmc2LqG1J2rcZzaR2D6BZoqOTS8yQEnz+TDeSWQ7NDG6Fp2JTE/m4m586ltvDpqo0OFn7UxzHh32c2dMb8Bm83G/37fkIdblp7/TlXhv/tCaNJKT4PAFFrVd3Cj8UesNjgap+FyTjgmYzQB9QfRpOM4rlw+inLsKbo1unoN8okEPy4H/40hE/9w259BiJu1c8tsOtSagZcRTGY4mDmX7r1dnJG3nIGiEcd1tcFwdyQTQriN5Qyzv32IqQO3FJ+M+Xltf6b/bsPtnd0WnDl4kKxhw+icklJqeQGwFgjw9aXhzp1ERUd7pHw1gaqqHNq5kTOLPiDw4gZ6BmXj66LHsc0BO9OMJIX1oO7gCTRtV49Z/7qPmPACWobAxQxYd1FhUG+VqMKe6rP3RzP2Dzvx8a0h12OLmuuatlN6Tm3yj4dRP8I5icLRgrV06DTYs2X0MEm8K+DsscMcn/8luowE7IERNB3/IC06uJ6bqKCggOO7tpKwdTmm47vwSzpFA1s6LXzUUiPtXivPBjv0MMTFFE3pBfBNYj2a1PZDUR0oauEgV6oDRbWj4ByARFEdaChcTtFz1bms8P5EppWZg6z4u+gKfiEdckKgrYsy2Oxw7JKGuKzamAxt8K8/gMbtxtGkeRuXBwQunjvJ4c2fobNewq4LI6rjfbTpUM5cNEK4gcPhYNX3YYzokw7AgvVNmfSoi8HPHPlg3uM8+qRowKs7KJV4RFiIu40jn0Wz7iem03yMhZ2y5q5twaRHjt7a4F7CpSVPPsmYTz5xuW6+VkufCxeIqC89w6rSuZNHOTTvXfTHl9HNJ5mwck6gfBkHvx1U9tLXhcdh0EBYnTiVKU/PloNTovpz0XZaOv8VRnf8NwDrd/kycGZOjY8F945qXk01ad2WJn/5701t6+3tTacBQ+k04Op1szabjVNHDxG3aRm5B7dguHyMOgVJtPa241PYhtmZA307ud5nLW9oo4lnhN/tfhIocOAy6QaIqgUrk6F1FBy/rBCXGUa+oQ2+dfvRuN14oke2o91NnnVv2LgFDRu/d/sFFqKCVi95szjpvpIBbfvNcr2h9ezVIZB1DSTpFjXeumWvM6DN1aR7yabajLlvvyTdlUR/4UK561oD5htNPSgqXeMWbWj8ytcApCQlsmzuB1j2zaODco5GAc5tjmbAoLaux5sa3hi+iZ3I0/+YU4WlFsKDXLSdHNlX21kZ1uE1PukGSbw9QqfT0ap9J1q1v5pZq6rK5YsX2LlxGRn7NnAudjvd7EnlzrdXWd0UVLtzekyti/w5Mx9OqhNpGPVnWo3oQLQ0ssRdylRQQKD178XP1x/ozdRHu5bd0J4O9sLr8hQj6MoZ/laIGmLP1u9oWesdAgsvf964x4/e4w/j7SPjHVQWe0j5AxulhoURWevOHzCoOqsdUYdRz7wNvE1uTg5rFrxP1pb/kXnlLL/t5vo1vkZo2lCu5xY1hIu2U0L8BXq3c17Gml8AbXu+7MEC3jkk8b5DKIpCZFQjIh94Ch54CqvVytqnOjCCY2W2vZircC5qHEsbNUbR6lC0ejRaXeFjHRqtHkWjLZ4bWaPVo+icy4uea7Q6FMdZ/AryWbrq74xrUXbi+U1ZHXnqb3PlrIa46y2f/yQTezonHj4Tp9B/7M9lN1JVsJ65+lzf2Dl1mBA11Imj2/HPf5h6hfnDgWN6mvTaQ62Q2td/obglYVOncmnuXCLNpSdHV4G0oUOr7yCZdyE/Pz+GTh8OU/uyac1G0o//lVouLt22O0D1qsSRooW4U5XTdtq96R+MLzwwtXl/MDH3l9ONt4aRxPsOpdfr8Rv+R06ueJYW3lnFy3OtsCPyfp7667e39wa2eLD4oqoqn+10sDEO+kc6u0zZ7LA2uRlNJ70nSbe466WnpdA6/H/Fz2PjpjJ5kIsz2fYE5zVKAJoA0EpyIWquy5dOk3t6AF2inXPMnrmoYIxaTWTDlh4uWfXTbfRolv7pT2S9/z7ROTkAZAHL+/cn5t13PVs4UVqJeiK0Xj1WrYUZzctutjEpkt73P1bFhRPCA8ppOxktC4s3KdCO80TJ7kgyuNodLnbLGi6t/QZ9xjnsXsHo245iyG+evL0RzVUrmHaDamXt6nkMav0JGZmwbhU4dFMIrN+FvhOewM+vEi4iF8LD5n41hKkD1gGw94ieVkPS8b32u10iJgDw6uSsQISogTIz0ti3rBGDeziTwKQrcMH8FT36P+zhklVvZ48c4eRPP6HJz8e7Wzf6TJ8uB7/vJCXqifiEeBKOPISfxsK5TTA8EnRa58m/zUn18BrwH7oPm+bpEgvhXuW0nc6eOUx4Xjv8fCEjC/Jqn6F+pIuRmmsgOeN9h+vQdygd+g698Ya3wnoBVCt2ux0l9zs0GgipBYR3Y/qjcyv3vYTwoPNnD9Mvel3x8yTbH+ni6oBSYUwAoAuXpFvUWKaCAjYvaMvYAc6kOycXDic/x9BxknS7W5PoaJq89ZaniyHKU1hPZGdlc2zHYwztaQHA4Aff7LiXBrUCcXiF0X3m44SEhnm2rEJUhXLaTge3/Z2JvZ2Ltx2MYPRDknQXkcS7pnHkO7uFACuXf8+oHs7uIfHJ0CvmR0+WTIhKt2/dDCYPcj5euyOAETP/VnajEjGBonVenyREDWS32/n1uy5MH5oIOOddXXtoPBPufdPDJRPCwwrrCavVxppFjzJpSC7gPDB1Nu9tHn35BQ8XUIgqVk7bSVVVArXLr27mKz0/SrqN/srirmQ9A6qK2WwhSLk6zcW244Oo36CZBwsmROU6sGc5I3ocBZwJhKHuu667bRbGBOAcxVymDxM1kKqqzPlyGNOHXh3Qc/7GHkyY8Z7EhBDWM6gOB/N+eJpJQ5IBsNlg9eHfMmyMJN2iBiqn7XT00Fb6dnIemEpIgV6DXvJUCe9IknjXJPZ05w1YseQLendyjqB6Nk5h4NgfPFkyISqVqqpcOvQwvoUzHi3bWp++gx4qu2GJmJDpw0RNNv/7h5g6YH3x859XNmPaff+WmBCisJ6Y+9MbTB92onjx3I2DmHjPFx4smBAecp2204l9b2IwOB/vPhZFaFi4Bwp455LEu6YoMdx/Xm4+DYMWFa/af3EcYbXreqpkQlS6Das+YlSfJACycqBJ1/+hKErpjcpMgdFEpg8TNdKKX15nVKfv0BVefLZwXW0m/eYjNMZmEhOiZiusJ5Yt+oqxvTZSNK7t3DUtmPbI6rL1ihDV3XXaTg6HgwjfDcWrvEIfrOrS3fHkGu+awh5fPNz/ymUfMamvDYCjp7UMm/CNJ0smRKVIuHyOvVvfR2vbR2bKTlbEwYDusHpPR6Y8OqjsC0rEBNpA0Mn0YaLm2bL+a7rW/ys+3s7nq7b5MXTc1xh8wiQmhLDHs3XjfLo3/QlvL+eiZVtCGX3fPhlxXtRM12k77d21hF4dr/am7TP4WU+U8I4miXdNoFqdIw8CGemZtK63qnjVySv30iYo2EMFE6JynD97mLO7JjO226niZQ4H/LAIeoz6uuwLSsQEAPqm7i+kEHeYg/tXEal9hNDCKmD7AQPt+3yFf4CfxIQQqpUj+xZQ1/jv4hjZtt+bbqNi8fH19WzZhPCEG7Sd4o7+m24DnI9jz7Zk0iD/Kiva3UIS7+pKtYMtHuypYL0Iqhm0Yaxd+QFTBjgA55zGIyZ97OGCCnH7juz8B2O6nyq1TKOBe8fB8kO/0KJ1x3JjAn190EjlIGqWc2diURJHE9XCOTjOkdMawpv+hYiIENBFSEyImqlEPXHp3DYsyc8T3doZI0fPaKnTaRthtet5uJBCVKGbbDuZTCbqBOwofh4c+YQnSnvHk8S7OlLtYI4FRw6oBWCPAxWSks7Ttdmm4s0SzE/RxcfHc+UUohLY7XYM9m0u12k0oDFvLTcmULPBu0eVllcIT0tJvkzi/l707uS85CguAazeDxEd5Qu2sxITomYqUU9kpidzev+fGNTDDjinXDXXWkibph09W0YhqtJNtJ0uXTzF/i1/RTGtJMDbzpJ1YLLA2Ecf8WjR71SSeFdH9iRnkIDzKFXhaP+b1//A1CHOJ5v3ehMz8W0PFVCIyuNwONBqrOWuV7CUGxNoAp1HcTV+7i+oEHeA3Jxs9q1oz4g+BQCkZ8L5zHvo37eNcwOJCVFTFdYTZpOZjcsfY/wg57WqWTlwIv0VBo8Z6+ECClHFbtB2upKWy+FNkxjX60iplx05rSF2zy907zO9ast7F5BRzasje5rz3pEFDudcehcvpdGvw9VpMPK8XsJQNN6/EHcxvV5PgVr+WQibrpPLmEAxgLb21XVCVHNWq5WVP3VgRB/nNDAFJthxajL9+3Z2biAxIWoyexqqqrJw1hOMH5QJgNUK6w+NY/DQcZ4tmxCecIO2086NHzCi55EyL4tu5iDl3KeoRfN8i2KSeFdLhdNbqLnFS3Zvm0VEqPPx6u0BDBvzZw+USwj3qN/iKQ6dqlVm+bo9zenU6/e4igm0dXD+BMp0MKL6U1WVeV/2YfKQ8wDY7bBkx2BGjRl/dSOJCVGjKcz54RVmxJwrXjJ/Q0cmTPkDEhOiZrp+20ln2095M+pFBOwnPT3d3QW860hX8+pIG+Y8SqWtB0ogJ47vYUg3Z0Vit4Ou9psyDYaoVjp2G8WB3d+zePtH+Gr3Y7MbsGh7E93jZepFNgFbUqmYwJEB2sJharVhni28EFVgzteTmD5kd/Hz2et6MPP+l0FRJCaEABYv/JgJ/bYXP5+9sh7THvi384nEhKiJrsknrq0nVEVf7kvNFiN6ffnraypJvKsjbThoU8CeDho/ju77lpZDnKtWbAtl1IMy0qCofjp2G0XHbqOwWCxoNBp0uhI/b9fERPH1qxp/0MkItaJ6WzT7D0zo9Quawj5uc9e0YPqjW1DsxyQmhAA2rfmMvs0/x1h4Bd6SjcGMn/E1Go1GYkLUXDdqO3n1x2pdhqv8Ot3cm4CAgKot711AUaUDfvWkqmBP5sCeX2nu+zi+PmCxwL4rs+jZb4anSydE1SuMCeypgAraENBGgCK9P0T1tW7Fe3SJeI7AwllflmyqzZAZ5/H28ZGYEAI4uG8lQbkjaVjv6uCz0f2WUyuklsSEENepJ8xmM/O/Gcu0gaspea5j0/5G1Gk7m+atunms2HcqSbyrIZPJxPoV/wXTFpIvrSE00EyfLrBpf33GP3LJ08UTQgjhJmazma0b5mAxZ2C3a+kY/jT1wp3rNu7xo92ws9QKqe3ZQgpxh7hw7ghZxzrSvqVzar1DJ3UEtNpPVOO2Hi6ZEHcHk8nEuuX/QSnYhEYxYVHa0qHnMzSIauHpot2RJPGuZvLz8/n1f2OYMmB9cdcPVYVf14J/o+8YEnO/ZwsohBDCLXZumU3G+dcZ0Okk3l6w9wicvwTjh8Dh03rC2h8ismFLTxdTCI86HLuN+EuxePlEQMp9DOiaD8DFeIVMv+W07xzj4RIKIaorGdW8mlm//G2mD15f6noLRYEJQyE/fZPnCiaEEMJtTp+MxZj1NCN6OZNugC7RMG4w/LQYvBqtkaRb1GiJCReY99UwArIHE9PqKRobJnPlSj5xCZCRBefNH0vSLYRwKxlcrZrRmjcVD6BzLZ11M6qqopQ39r8QQoi70snYLxnd+UqZ5QYDhIbWplFTudZO1FyqqrJl6YNMHbSxeFmDOs7bvBWgC32WCTMe91wBhRA1gpzxrmYUCspdp1UKZDJ7IYSohnSUP35Hi4apJCQkVGFphLiz7N25in5tt7hcN7Q3hNTuUsUlEkLURJJ4VzM2bbty11mU9s6pMYQQQlQrNjW03HWJaeGEhck8xKLmSks+SESY3eW6oADIzz5RxSUSQtREkoVVM606P8WOQ5Fllh8/F0jd5o95oERCCCHcrV7Tezgb51NmuapCqmmozKcqajQv3/rk5rleZzaDRh9etQUSQtRIMqp5NXT04GbOHvonod7bMeisJGZ3IbzJU3TrPdnTRRNCCOEmqxb9k1rqv+jSJh1FgSvpGtbsH8TI6XMJDAr2dPGE8Bibzcay77swrt/BMuuWb2vOwKmxeHt7e6BkQoiaRBLvaiwjIwObzSZdDIUQooaIv3yeg7v/h4Z8AkJ70LPvBBlQUwjg6MFNXDjwO4Z1P4leDzYbrN3diIhWH9Oh6whPF08IUQNI4i2EEEIIIYQQQriRXOMthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeIthBBCCCGEEEK4kSTeQgghhBBCCCGEG0niLYQQQgghhBBCuJEk3kIIIYQQQgghhBtJ4i2EEEIIIYQQQriRJN5CCCGEEEIIIYQbSeLtJg888ACKoqAoCgaDgaZNm/LGG29gs9mKt1FVlS+++ILu3bvj5+dHUFAQXbp04f333yc/P/+6+//uu+9o164dXl5e1K5dmyeffNLdH0mI2+KumPjuu++K93vtLSUlpao+nhC3zJ31xJ49exg8eDBBQUEEBwczfPhwDh48WBUfS4gKc2dMrFu3jl69euHv709ERAQvvPBCqf0KcSdwZww888wzdO7cGaPRSIcOHVxuc+jQIfr27YuXlxeRkZH861//quyPWKNJ4u1GMTExJCYmcvr0aZ5//nlef/113nnnneL19957L3/4wx8YN24cGzZsIDY2lldffZVFixaxevXqcvf77rvv8vLLL/Piiy9y9OhR1q5dy/Dhw6viIwlxW9wRE9OmTSMxMbHUbfjw4fTv35/atWtX1UcTokLcERO5ubnExMTQoEEDdu3axdatW/H392f48OFYrdaq+mhCVIg7YuLgwYOMHDmSmJgYDhw4wJw5c1i8eDEvvvhiVX0sIW6au/IHgIceeohp06a5XJednc2wYcNo2LAh+/bt45133uH111/niy++qNTPV6Opwi3uv/9+ddy4caWWDR06VO3Ro4eqqqo6Z84cFVB//fXXMq91OBxqZmamy/2mp6er3t7e6tq1ayu9zEK4k7ti4lopKSmqXq9Xv//++9susxDu5K6Y2LNnjwqocXFxxcsOHTqkAurp06cr7wMIUcncFRMvvfSS2qVLl1LLFi9erHp5eanZ2dmVU3ghKkFVtJVee+01tX379mWWf/LJJ2pwcLBqNpuLl73wwgtqixYtbu1DiHLJGe8q5O3tjcViAeCnn36iRYsWjBs3rsx2iqIQGBjoch9r1qzB4XAQHx9Pq1atqF+/PlOnTuXSpUtuLbsQ7lAZMXGt77//Hh8fHyZPnlypZRWiKlRGTLRo0YKQkBC+/vprLBYLBQUFfP3117Rq1YqoqCh3Fl+ISlcZMWE2m/Hy8iqzX5PJxL59+yq/0EJUIne0lVzZsWMH/fr1w2AwFC8bPnw4J0+eJCMjo8L7FVdJ4l0FVFVl7dq1rFq1ikGDBgFw+vRpWrRoccv7OnfuHA6HgzfffJP333+f+fPnk56eztChQ4uDUog7XWXGxLW+/vprZs6cibe3923vS4iqUpkx4e/vz8aNG/nxxx/x9vbGz8+PlStXsmLFCnQ6XWUXXQi3qMyYGD58ONu3b+fnn3/GbrcTHx/PG2+8AUBiYmKllluIyuLOtpIrSUlJhIeHl1pW9DwpKckt71nTSA3sRkuXLsXPzw+r1YrD4WDmzJm8/vrrgDOYKsLhcGC1Wvnvf//LsGHDAPj555+JiIhgw4YNcq23uKO5IyZK2rFjB8ePH+eHH3647X0JURXcERMFBQU8/PDD9O7duzjR+Pe//82oUaPYs2ePHJQSdzR3xMSwYcN45513eOyxx7j33nsxGo28+uqrbNmyBY1GzkGJO4u720rCcyTxdqOBAwfy6aefYjAYqFu3bqkzDc2bN+fEiRO3vM86deoA0Lp16+JlYWFhhIaGEhcXd/uFFsKN3BETJX311Vd06NCBzp07325RhagS7oiJWbNmceHCBXbs2FGcVMyaNYvg4GAWLVrE9OnTK638QlQ2d9UTzz33HM8++yyJiYkEBwdz4cIFXnrpJRo3blxZRReiUri7rVSeiIgIkpOTSy0reh4REeGW96xp5DCfG/n6+tK0aVMaNGhQpnvfzJkzOXXqFIsWLSrzOlVVycrKcrnP3r17A3Dy5MniZenp6Vy5coWGDRtWYumFqHzuiIkiubm5zJ07l4cffrhSyyyEO7kjJvLz89FoNCiKUrys6LnD4ajcDyBEJXNnPaEoCnXr1sXb25uff/6ZyMhIOnXqVKnlF+J2uTMGrqdnz55s3ry51OwXa9asoUWLFgQHB1d4v+IqSbw9ZOrUqUybNo0ZM2bw5ptvsnfvXi5evMjSpUsZMmQIGzZscPm65s2bM27cOH7/+9+zfft2jhw5wv3330/Lli0ZOHBgFX8KISpPRWOiyJw5c7DZbNxzzz1VVGIh3KuiMTF06FAyMjJ48sknOX78OEePHuXBBx9Ep9NJPSHuardTT7zzzjscPnyYo0eP8re//Y23336b//73v2i12ir8BELcntuJgTNnzhAbG0tSUhIFBQXExsYSGxtbPEbUzJkzMRgMPPzwwxw9epQ5c+bwwQcf8Nxzz1XVx6v+PDCSeo3gajqAa9ntdvXTTz9Vu3btqvr4+KgBAQFq586d1Q8++EDNz88v93VZWVnqQw89pAYFBam1atVSJ0yYUGraGCHuRO6MCVVV1Z49e6ozZ86sxBIL4V7ujInVq1ervXv3VgMDA9Xg4GB10KBB6o4dOyr5EwhRudwZEwMHDlQDAwNVLy8vtXv37ury5csrufRC3D53xkD//v1VoMzt/PnzxdscPHhQ7dOnj2o0GtV69eqpb7/9diV9MqGqqqqoqlylL4QQQgghhBBCuIt0NRdCCCGEEEIIIdxIEm8hhBBCCCGEEMKNJPEWQgghhBBCCCHcSBJvIYQQQgghhBDCjSTxFkIIIYQQQggh3EgSbyGEEEIIIYQQwo0k8RZCCCGEEEIIIdxIEm8hhBBCCCGEEMKNJPEWQgghhBBCCCHcSBJvIYQQQgghhBDCjSTxFkIIIYQQQggh3EgSbyGEEEIIIYQQwo0k8RZCCCGEEEIIIdxI5+kCCCGEEOLusGPHfK5cmYVeH4/NFk5AwGT69bvP08USQgjhRufPH+bo0Q/R6Q6iqkbs9n4MGPACfn7+ni7aXUVRVVX1dCGEEEIIcWdbteqftG79OpGRpuJlqak6duz4I2PHvuXBkgkhhHCXkyd3kpo6gz59LhQvczhgzpx+jBu3Ah8fH88V7i4jXc2rvXTgKHAAOAMUeLY4QnicxIQQpd04JjIy0vHx+aBU0g0QFmYjMvIzLl06UxUFFaKKSD0hRJGTJ98qlXQDaDQwdepmNmx4zzOFuktJ4l2tXQAOAalAFnAZ2Atke7BMQnjSBSQmhCjpAjcTE7t2/Ujv3oku99CxYyaHD89yaymFqDoXkHpCCKe8vDwCA7e6XKfVgkazpYpLdHeTxLvaMgEXCx+bgbjCeztw1lOFEsKDJCaEKO1WYsKK5jotBkWxuaF8QlQ1qSeEKMluz0Ons15nC/ntvxWSeFdbaYCK82jtcZzdppIL12UBFg+VSwhPkZgQorSbj4no6Ans3Ol6PNYzZ7xp2HCUW0sqRNWQekKIkgICrKSnN3O5TlXBZutQtQW6y0niXe35AdrCx+k4j+YKUZNJTAhR2o1j4sCBz4mLs5GbW3q52Qx7906kdevu7i6kEFVI6gkhitStO5F9+8qmjMuXN6Znz2c8UKK7l0wnVm2F4BwQRAvUBoquzUsC2gEGD5VLCE+RmBCitJuLib17f6Fbt38RFgarVsGVK3rCw2thsUSgqqOYPPmvnii8EG4g9YQQpYXQrl0PfvlFJSEB9HrIzfXFYOhA585/IjS0gacLeFeRxLva8gIa4LxWKRTnICE2nIODhHuwXEJ4isSEEKXdOCYuXz6NXj+V8MIQCQjwpkePiwQE1EKr1braqRB3MaknhCjNix079jN1qnP26YMHoWXL1zAajUBnzxbtLiSJd7XWCPDHecTWjPPapTAgA6jnwXIJ4SkSE0KUVn5MmEy1OHy4ByNGOAfPOX9eISRkDcHBYR4rrRDulJeXh8MRir+/1BNCFElJmV38+PTpZrRvH4HERMVI4l3thRbe2gC7cFYiV4AcnI0tIWoaiQkhSisbE6qayi+/3MuMGekA5ObC+fPvMWhQbw+WUwj3OHFiJydPvkVg4A50Ohvp6Z2pV+9pOncejdQToiYzm820aBFb/Dw8/GWgKRITFaOoqqp6uhCiqiQApwof18J5vZIQNZnEhBClOWNi4cL/MG7cUop6k8+dO42pU2df95VC3Iiqqhw/eIC8rEzadu+Fl5eXp4vE+fOHiY8fS58+F0otP3y4Fnb7j3To0B5P1xMFBQUcid2Bf0AILVq3Q1GUKi+DqJnWrfuIwYOfBmDvXh0dOhSg06Xg6Zi4W8mo5jVKBM7rl8A5SmeWB8sixJ1AYkKI0iLYtm0tAweWTLpbMnnyLM8WS9z1YtevZMl9ffB5vhuN/jaYzdPbseLDf3i6WBw58mGZpBugbdt0Ll36BE/WE6qqsvTHv7D1s7Y0ujgY/a6uLH6/P0f2b6yyMoiaLTPz8+LH5893R6fTIW2nipPEu0bRAFElnp/3UDmEuFNITAhR0rlzhwgNfYvgYOfz9et9GTlyFxqNNBfc7WxsLEsefpiVXbuyvG9flrz8MnnXzt92lzp79BCW9x5mbNp2oox2Qg0wzHKarktfY+1X73u0bHp97HXXqaqCp+qJVXPfoo/x7wxteZbQQGhSx8q4llvI3H4/ly+eqbJyiJopLy+X6OijADgc0KDB84VrpO1UUdWiJrXZbDgcDk8X47YdP76LpUsfZeXKUSxd+iCxsevd8C7hgHfh40ycAyMIUZNJTAgBkJOTxYUL/WjRwlmfnjihoVGjD/Dzs3u4ZNXf0c2bSRk7ljHffEPM3r2M3LqVUW++yeIxYygoKPB08W7bsTmf0s2eUGZ5qNaOae2PHm3DORzGctfl5uYVduuu+nrCZrOhJswiyK/sFaF9msRxYMMnbi+DqNm2bfuEFi2c379duwx07TquxFppO1XEXZ14H1y7msUzR7O+SySru0ax+JEZnD9y2NPFqpAtW77Bbo9h9OgviYlZzujR3+HvP4bVq/9dye+k4BzFtogcpRI1ncSEEA6HgxUrujNoUA4AGRmQlvYnGjVqgsSE+5395z/peelSqWUaYMrGjWz44APPFKoS6RNOlbsuJG4f/3swhv0bVnskAbfb+1HeaEcaTQazZ4/GbndQ1fXEsaOHaeB9tNz1Bkv5f1MhKkNu7lfFj+Pj+17T80naThVx1ybeB9euRv3jPYzds4xheUnEZF9i7MbZnHtsMvFn767uN/n5+ZhMfyc6OrPU8iZN8vHz+ycpKWWPEt+eMMC38HE2zqkyhKjJJCZEzTZ//gymTj0JgN0OGzb8jt69JxaulZhwp8zMTEJ37HC5TgcoW7dWbYHcwOZd/qjH+TaYkbSG9v8azq4B3sy7pw9bF/6E1WqtkrINHPgic+b0xV6iY4eqwrJl0KMHTJ++jF9/bUJ6ukpV1BMXzx1n3n8GYtvSiczrXGlgk5GkhRtlZWXSufNpAGw2aNLkTy62krbTrbprE++4bz+kQ15qmeWDk0+x7/P3q75At2Hr1h8YMMD1kaKePa/w3XdD2Lz5a9LTK+sLfe31Shcqab/iRjIzM7l06RJ2u3TdvLNITIiaa9269xg5cm7x83nzujBhwqdITFQNu92O7npJZjWoLw4fv0RWOR8xxw5eWtAq0NPPwpT0bfT56h6ODfZmwaT2rPnyXXJzctxWNj8/f8aMWc7KlW+wfPlwVqwYzOzZj5GZGUbdus5tJk26yPHjjTh+PLHEKy9UajkO7FrJ/Lfa4Lu7NVNab6RTE0gtZ8yqK9kaAqLGuV4pRCXYtu1dGjZ0Pt6+3ZsOHYa62EraTrfqrky8kxMScGwv//rn/B8+YcHA9ix+4WkObtuCzWarwtLdOrs9B73e9TpFgXbtjtOv329xOELZuNGPBQs6smTJ7zl8eNttfLYwwK/wcQ7OufiEu8SdOMGvEydytGlTspo0YWWXLqx5911PF0uUIjEhap7jx7fSuPHz+BV+9ZcvD2H8+M2F17VKTFSFkJAQkrt0cblOBQratq3aAlWyxS8/x7Pn97PiLKSYri63OOBnn06YRv+ehdpmnM4vPUVWez87kwoOMfSX50kZG8gvo5qw7F8vkZqcVOll9PX1Y9SoVxk5ciUjRqxlxoxPmTLlMj//3B+LxblN794FeHuPZ+3aXwtfdfsx4XA42LDkU5a8VYdWSSOY3OEYoYFX1ys6A99sDMFaoqmXkK5jQ8Zj9Bk67bbeW4jrMZt/KH6ckjLoOlPYST1xK+6aebxtNhtbv/mG9P/8h66nTnE0FGKCXG+7PA9GFvZ8cKhwzKZwPqgO5tadCBkyinZjJxMSGlplZb+Rs2ePYDL1pE2bsn2K4uMhMRFc1ckOBxw/rnD+fARmcweCg0fQps1kwsPr3OQ7pwFF18T7Al1wHr0SlSkrI4Ot/fox6siRUstTdDpi//EPhv3JVfcdUVVSUxPYseM99PoDqCqoaiMGD56Cl1cwEhOVJz09naysLOrXr4++vCONokqlp6dw4kRDevVyZkOxsTrCwo5Tr17TEltJPVEV9v7yCz4PPUTrzMxSyxcDV9q25cGDB+/KuZvXf/oBnd75A0FaZ/ftj5QAGkycgBEHSrPO9PvNo3h7Owdoys/LY8fcb8hY/i1Nkg/RsZxB/ZLNsEcTga3baDo+8EcaNmvh1s+wZMkLdO36LyIinM/z82Hx4j5MnfpXNBp/KhITpoIC1sz9C74pnzIoOq/UOpsd1hyphabJ/zF4wh+xWCxsWvoJSs5BHBofwppPoEuv4Xfl90HcHdLSUjCbw6lbF8xmOH16C9HRfa73CqSeuDnuS7wdDsjOdp6yDQhw3lfAqX37OPTKKzRYt45uJbpiLfGFMS7yS1WFpfkwxrfsuiJpdjis9SWtQXMMPfrTaOw0WnXpirZo0lIPmDPnHiZO/KnUmW+HA95/P4oGDQIJCTlD27Z53Oh4QVYWHDrkRWpqE7Ta3kRGTiY6uj8Gg6GcV+zHeV0GQGug9u1/GFHKsr/+lRGvv+6ye8mKNm0YcuCAJCIecunSKY4cmUBMzLHinyibDebO7cSECW/i7d0RiYnbc/n0afa++CLhGzZQKyuL861awcyZDH/pJRRVrZR6Qtw6m83G4sWNmTjROaBXUhLEx/9K586uuq9KPVEV9i9dSvynn6KPjSUrJwfvnBy6AaHA8uefZ+y/K3uwVffas3gB9f4wmbqFTatNii/RW84QEh5xw9fabDZ2L1tA/IJPqHNhFz18zOhcVKI5NthhDSInejAt7n2WNl17lUlIVVXl4oULADSMiqpQwrp//2IUZTIdO15th86bV5ehQz8hKKgnNxsTV1KT2DTn9zRWFtKxcekei9n5sPZUE+r1fJtu/SdJYl2kkvIJcfOWLPkjY8b8B4D16/0YODD7Jr6PUk/cDPck3klJcPYsFCXKRiM0a8YNs8ZC2VlZbPrb39B8/z0DUlO5Noe2Agt8vTFE6JioXL3uR1Xh5ybdqDXpPvK2rUN/ZC8N0+Jpo3Ogu873xa7CUZuGC7XqYm3TmdChY2g3egLBtWq53D5260YSty4HoP6AcbTt0fumPtf1WCwWli//P/z8llCvXhxJSXXIzIxh2LD38PV1duFIS7vCkSOLuHJlKXr9Pho0iCc62oFOd/19nzqlcPZsKHl57QgMHEarVlOpXz+qcG0GNtt+Vn7/I1zYjc5SgNWnAX7RMxg48Xe3/bluxsmj+zl7YB6KaiUkahBd+4yoVhXOyilTiJk/3+W6C8Dejz9m0uOPV6vPfLdYvPg3jB07q8xyux1WrnyQUaMeA7oiR24rJicnh/V9+jDu0KFSyzM0GnY89xwjx4+vcD0hbs/s2TFMn74KAIsFVq9+kdGj3ypn6wzgYOFjHyQm3KSw7aQW9m2e/8ADTImLAyARSF6xgg4xMR4s4M07sWs7yvS+tNA5Rynfb9cTuvwgDVq2uuV9qarKwa0bOPPzBwQd20gvYzY+Ls6TWByws8CblCa9qD/lSboOG8u+Nb+Qsvw9GmfuBhTOBXcjfNRzdB02sewObiAx8Tz793dn1Kir4wtt2eJF7dof0aLFQ1wvJs6eOsj+RU/RNWwbUeGlm92Xr8COxO60G/VfWrTpdsvlqtauySdsWi2rV61C3bIFbVYW1qZNqffQQ3QaOdLDBa1eFi+uz9ix8QAsWDCZSZPm3cSrpJ64GZWfeGdmQmysi3dSnP2lfV2finY4HOycN4+Et96i06FDNHZRrGMaDUe7daPxq6/SacQIEs6fY9+H/0J/IhbV6IW9Ux/6P/N/BAQFldrviQP7OL9oLgU7NhBy8QRtbXmE3uDkdooNjuj9SG/YAq+eA2kyfhpNotux4IWH6H1kHg30zorxvM3I7g4zmPL219cMs18xJpOJ5ORkQkND8S3nb1Xys508eYBz5+ZhMm0gMPAEbdpkU+cGPc3z8uDQIQNJSVEoSk8ubTnCI/X24VXipGtqno5doS8x+rdv3PZnKo+qqiz88g+00XxFy3r5ACRlaFmXMJrJT8/BaCx/bs27ybJp0xg1d67LdQeBAOCcnx9ZEyfS829/o06DBrf3hrk5oDrA1x8q4TtZXdntdtaujWL48Msu1y9f3omRI/8DtARufIZGlLXszTcZ/vLLuDo2uNDXF5977iGscWNqN2xIREiIs+fHdeqJCpOYKGX58tcYPPgNin5if/55IDNmlD9uilMszrlaQWLCDVy0nbKysjg8dSp9ChPxnUYjzePiqFW7Es4kuTEmLp89TdKwaLponOU+Y9Ng/n4dbfoOqJT9nzl6iMPfv4th33J6kEpIOR365lzR0KyJQqew0l3WjxSE4HhgNu16D7nl9zabTSxYMIipU3cUn/Q4d05h9/Zn8MtR0JkSsXnVoc2QR2nUrBV7ty3h4uY/MqjpKYL9Su/r0AUtp6xj6Dv1Q8Ij6t9yWaq9a2JCVVVm/fWvTN60iaLW4UVgS5AOn7rBePv4YGvbhaaPPEurnhU4ISb1BACJiXHodA0JC3NeVnH58j6aN+90k6+OReqJ66v8xPvIEbhyBdLTnRco63RXb3XrQvPmoNcX3y5euMCev/+d8BUr6G0ylemOmwlsrlcP/aOP0v/55/EpapDlZMO5E2ByJmxodVAvCurc+McrPS2Nw0t/4craJRiO7CMqI5HWOgfa6xyYsanwnVXhnpYqXtck7Xk22DLhX8Q8/n83+Udyn+zsLA4dWkZKymK02t3UrXuJdu1slJfDHtwFQauhYVDZdStPG0mtNxhfPx8UjQ4UPYpGh0ajh8J7RaNH0erRaJ2PNVo9Gq0BRaNHqyu6NxYv1+oMhfdGDu1ZwchabxPiX3reTpsdlqU+y7gHq8fgY1veeYc2L7xALRehtggo2bEzBdjesCE+jz1G/2eewejjc/NvdBsxcTc5d/wwRxZ9guHKSewGfwxtYhg843e3fODLYrGwdWt9Bg0qOzsCwMqV0cTEfAh4Ad24S8ei9KiVM2cS8/PPLtclA/FAJ8AMJABXtFqyvLzICwrCFhICdepgbNgQ32bNCGzThvDWrQmvVw/djbr5FKkhMXEzHA4HNpuNY8fWUrv2qOLRmn/9tS6jRl24ictdsoADhY8lJipdOW2nI6dPE/zOO9Qr3Gxew4ZM2rsXjdF4tS11K5fJuTkmMq9cYX/vxgxyOHsjJtnhwj9n0WPKjErZ/7WS4i+z57v3cGxbQIeCizT0vrpucT6Mbef6dZ+eDyO8bT+0frXQB4RiDKyNV3A4PiF18Q+tQ2BQMIGBgS4v01NVlSVLnqdnz/cIC4PtK0C/HbqWOB6y47IvB3I0PByTg/Ga0Np0zJvM4N8yZOqb+Ppdk42Lq66JiW2HDtHiq68o6hN1GTgRCkOCSr9sV0BdAj6ae/PJt9QTpSxa9ATjxn0KwKpVQQwfnnELr5Z64kYqP/HevRvy81GTk4k/fhxvvZ6QomTZzw+aNqXAZGLjnDlYly6l75UrBF+zCwewzWAguX9/ujz3HFGtWoHBcLWSQYXjsc77a7vnNm0DIWG3VGS73c7xvbu5sGgu5l0bCYk7TTt7HrWuqcuWGmB0Q9f7WBDUnUmzdt7S+1YFVVU5e/YYp0/PIy9vHQEBR2nePIOoKOf6FV/CCJPr1zocsDoNYnq6p2zLdsOocnpVLTvWipHPHa0W3a/VXbuY/dprjFy1iqLBSlVgha8vFw0GxmZkFDeqSorVaDjdti3NH3mEdt27o5SMAb3erTFRIaY8yMtyVloBoW45Ynxo6xryv3+IHl5Xz1Jnm+FjtR/tR06gQaNuRLfvddP7W7JkKGPGrC1n3TTGjHnM+cTWAKgLOq/bKb5rqgrWdHCYQesL+sAbv+Yusfy3v2Xk11+7XHcS0AJNXa51rQBnl9srOh1Z3t7k+/tjCwlBiYjAEBmJX7NmBLZqRUSLFtSuHYb21GFuNSZUVWXrgrlkr12C1pSPtXErev7uGULDw8st15XkZHbN+gxtXjqauk3pN/MRvLy8bismYndsJGHbLygOC95Ne9J33G8qNA5JSmI8239+BWPyJrT2bFKVNBoNgl4jYNcuI02anCc09GYH5DwEpDsfejAmVFVl1+YlZMZtRFV0NGw7idbtu1d+OapSYduJlBRISCi1atmaNQxbvpyi/G3ekCFMefnlqxtotaXrBg/VE6aCAlb3aMzYfOeo49kO2Pn02wz7wwslNnJfPZGdlcWOnz4ld82PtEg/zmUfBzHNXG+78iLElNOec6iQY4EsC2RbFfLsOgpUPSaNF1aNNza9Lw6DHzY/M21nHCV+Pgx1UYmvPgO9B4CvF1issPpoGF4t/8zAsU/feixX43qiXNfExPI5cxi582o7e4k3jHHVeAI+1dambsfuaH380Pr5o/P1Q+fnjz4gCENQMIagYIy1QvDy8cU7/hzeRj3eXl7odbqr7c67oO1ks9lY//2n2PavQWPOxxrZho73PE39xrdSs5a2dGk49WulkLAVLp1pTIMeTzBgxhPFgyDemGfqiYwcK9uWvYcudw8qWhyBvRgw9tk77uCWW854b/n+e7IWLqThxYvka7UkN25M86FDyTMYOLd8Oa2PH6eNi7c9B+xv0oQ6M2bQc+DA8s9gpSXBlSSwWpyP9QYICoSw2uAXCC3bgUbrPGKs1ZW912qv3peT2F1JSeHwkgWkr1uG8dh+GmUmEReoMqKcIF+aDASHO0fZfPD/KneUTasJMuPBkgd6LwioA17+Fd7dqaOH2Pm/J2kbspOEbBujyukJYnfA2nQY3qPCb3Vdq/bB8M6u160/Fkafpy9fZ1C4u8iRI6ipqWxasID87dvRmExYatema79+1GnWjFQfH7Z99x3eGzYwIC+PazsnmIFNvr7kDxhA7wcfJCwkpOx7VEFMlMvhgMsnUDOSMZktGA16NHojNGgN/tceVqs4h8PBwmf6MlmzvXjZyXw4Vhf6jYaQWnD+spE9ZwYxePy3hISWnygV2bv3F/z8HqRly9KTpa5cCc2a7aBJvVTIigerHWgFhkAIagaGgMr5ULY8yD0C9oKry3SB4B8NGtdnIE0mEzqd7ubP+nrQriVLaDhhAhEu5iH+ymikjpcX/vn5BFutROCclKQy5HP1DHq2wUCBUY/Nzw8lNBhj/Xr4RjUkuO8AIho1JiwiHI3eADodqkbLnD8/x9C1PxKiOOsoVYXVEc1p+vEcmrTvUOa9ti/4EdvX/0dfNQlFAbMdVvm1pfWjr9K0TolPpNXfVEyoqsr8N5+g24VvaehtBiDbAkv1Axn9t4WlLqUqxUU9kWtTWP3mQCbW2Vtq0wvZEFsPmnZZR3T0oJv8qwJkg2mTR2PCZDKx4KOpDK2/jNqBzt5SZ5K8ibU8xKRHP7x7D9YWnd1LTXXebDbnbytASAiz33qL6cePA86egMdefJFew4ff2nu4sZ6w2+3M69+O6cnHALCosGz8E0z498fODQrrCTJTrr7oJmOiIsxmM7/e15Rp4eVcSnQBRkbd/vusSobBPUHnIo+22mFJEqiBzWnQ91907VPBebcrUE9UC9fExIoff2TEjh3Fq1cEwwgXzSGAFXkQ43Pj5oxdhYKimwNMKphRMKNgUTRYtXpsWi02rR6bToddZ8BuMKIajKhGb1SjEcXLF7x90Hj7oPHxRevrh8bHD52vH3o/f/T+ARj8A9EHBGIMCMTbPwBvHx+8jUa8rlzEkJ9x9XfrFmLCbrfz89NTmXR2Id4lvn+bDY2p/cpPtOziovFeTj6hqiqblv5IyoHZZMctx5gGQ2tBhC9Y7LDU1okef55H3YaNb1guT9QTSYnJ7F7+F8ZEnyr+n9vtMP9YX0Y+thT/gEp630pQ6Yn31o8/pv5zzxFVNPFhoRVAC+Daf1kesCk4GPuoUfR74AECvbycFc71ipV4EbIzwFQAKc6L/wkKhNAwZ4XQ4hbmvNSWqFjKq3A0WmzAvMdGMsN80OVulqbA6MJuRjk22G4NIq/9MFrd+zwtO3WteGOgIAsSDoGjZMNVgfAWEHDz107k5uSw+ft/Ydv+DX19EwguPPh0LAOMUdDExSVjS0/qyQxthZefPwoqqHZQbSjYQbWXulewAw402FFwoGBHozhQcKBRnDdFtaFRHGgVB4qicibeyoNDXf+fl57owuhn99z057ujZWTAwWu+Nw6H81ehXTvnGQmLBaxWDm/dyon33qPpvn10dJGsJAA769cnaNIk+o4ejb4o+SqMCVNONubESwQYDSjBQW6NiaLn6pVLrPr6fWxHthKQl0KuMRBL067EPPA4Xu37g+76DQNVVcnJySEh7gJpZ46Sc+EkBfHnsKdcQpuZhDEvHX9rDrn5BTRqDi0LK9oCG6yNhDFTyu7z83mdmfzIypuaNnD37vkkJ39CcPA+LJZscnOhZUs4dvgRxvfoBWqm87uvNADCQNFCeBfQ3ezR33I/OGTtdlYcJX/vFAUMYeDfptTmuzbMJeXw5/jZDmFxeGPy60fnEa9Rv2E5p3TuAKqqMv+JJxj4xReEFiYRKrC5QQPC/vhHWhfOT6yqKtk5OSQmJJCmqmSfP4/53DlsCQloU1IwZmTgn5dHsMVCHVWlnLbWLcvFGVNpej3Z3l4cNWq5zy/T5Rgg3wQ3o9XMh9AYDGiMXmiNXmSaTKizXmawV2aZ7X9Um9L1wT+h6HSomqK/h4Ia1dYZO4X/c7Xo76I67/et/ZUxZ98k2FD6t1FV4TPzAFoPm4ndXIDdUoDdbMJhLcCRn4UjKwHVYsFht6DarWC3cSY5kef7XkDr4hj2D4f1GJt2RqPROr/TigbQoBQ9LrlMo3M+VlUUczwoVjSKAviD4rwUSfGJAJ3R+Vhx7lOj0aFotMXLih9rtCiKDo3W+dh52ZIWRdGgMV8srCu0aDRaFI0GjUaPxisEjV8zdq/9kAdazSrTuzojR+GA9+cMGvPITf//7yg3qCcKbDa2tG7NsGznqMGHtVpqLVlCvTp1nANPWSweazupioZZzz7Gby5crbN/bjuYGZ9+f7XeSLsM6QnO75FWe7V7vEYLLXvcsJ64ZQVZLH7rUcZkzC2TfDlUePdSY6Ii66GYstFZc9HZ8jA4THipZnwUK75aG4EGCDSAz3WKtjIJYvqWv/4nyxP85vmPK/45brGeqFauiYlNa9bQ4c03i3sOLg+GkeVUBiWnFb7T2FVngl+U7BeoYEHBrChYFC0WjQarzohdp8OmM2DXG3DoDTgMRlSDFxi9wMubs2kpPKk/hK+LY/Bf2ZsSOfo+UDQo2sLfXrsFJTcFRQGNRoOiaFA0Wgiqy/7dC7m/4RaCC69uVFXYcAzqFUCLwj/4L/6TmPAP1wMFl2LJhdT5FWo7ORwOrFYrVqsVi8Vy9d5iwWLJx2rOx27Jx5oRi92Sjc1qxm4zc2z/Sh7vf6zM/lQVll55kTH3lTdwaNWr1MRbVVWW9u3LmG3bXK5fAowpfLxbrydu0CDa/u1vtOja9dodOSsQq7X0rTA54fIFSLjoHAgh+bJzWVAgBNcCb29o5J45HTetXUbLje8Sri99TXJcAZzKgyEu2vgmO+wo8CYtshONx9xDx269UIqOFiuawptS2LXkmntFAwkHnUeoLHk4O+Er4O3nXB/ZxXnvnHwYKH1vt9vYuXYJiWu+pL3jBM0Cy/6rL+fCj8l+PDkgF/8SPUHiMuGYcTgx4yaCT20IKLzWpWj/ziclKoIbLLdmQ/6ZUu+9/9A5AtK/omlEQanlWXkKO9W3GT6lGs1vnZjoHJnTVjh9iMHgHME5zPU5PovFwuaPPybno4/ode4crs7d7tXpON+jB22eeYZAaz77vvsE34sn8LGauOIXQlD7zvQdNNitMQHw68dvMChxAwElGid2FWbr2zDu6T+TaIErly6QnRhHQUo8toxkNNlpGE1Z+NvyCMJMhF6l9g3G0juUAyHNoF5hr6FV2TDwT84/5bXOnIXM1aDJ13Ahqxa2wKb4RnWgTnRvWkR3wNfHG+f31FH8nc7MzGLJlhe497ebiI+DVT9AqKU3PsEa+vX0wqD1AUNPMAa7LSbQ+oBvc0CB4J6gcX64HWtnEXr5dzQLzy21+dJj0fR6YD21qqI7XAWpqsq2uXPJWrQIbU4O1hYt6PzUU9Q1Gm8pJor2lZmZSeL586QdOULOsWOYz5/Hfvky2uRkvAoT9FpmM3WgzGVMN7LMj3J7AO01QX0dRJRo5CyzwciWrs+qJJogwQydb7FH6DITjIp2vW7lRRgSictplVxunwEx5VzOczoFlIbQtJxeXHciVYXle65zidL5UYx6YmnVFqoy3aCeOBcbi71zZ5oVHqxZHB7OiEuXrl6f76G207x/v8nEA2uKx8mZFdqMGe99XvqEQ9xh5wmErGQoKJyNpk4DZxIRGgnB4VfbPcXto8L7Uu2im2875WSks+zrvzPR/ySGwjzfbIeF9p6MffV/+Pr6uGw7gYrqcFCQX0BWTjZZGWnkpSeTn5GKKfsKlux0bHkZ2POziLt8ngntLtLQxSQ4cZk60np+SMeuXaqknqiWSsSE3W5n9ssvM33XLrTAYi8YW85l2B9pQqlTvz6K2YzGYkJrtaC1WtDZrOjsVnQOOwaHHYNqx6g68FLAW6H43vsuuCx5uRZGlnMCek8mNPTmhu0qgC150DoGQlz0yF60E8YVHtzYmKwnrm1ffL0AhxXVYUFRbaBanfdYUbCh2E1osKBgQqNY0Sig0WjRaECnUZ33WudJOJ1WRadR0WlV9FoVvRYMepz3OtDrnPeGGxyXW74HRnYtZ93pXox8xnVe6gmVmnhnZmZyPCqKnllZLtf/CjiaNSPo2Wfp+9vfVnzuYrMZDu0ufRbY4XDeoppCUCjYbc4KqOjeYb/6vOQ6u/3qc9VR/nsCqA6Wf/0OPmd30NeYharC5gI/rK360Dy6HQf37kR/4RA9dJkuR9m0q7ArV098WCvqDRhHtz790bnqn1TEZoKUE87HWXFgK+xFULfw2o1aDcGnbNPy1MmTHFz2HfUy9tGrtrXM+jwrbEoPxNZ0EL3H3ENwcBBrF31KXuJe9JoL4A2+DaFe2GiaNx8MBj8Irvj1IgBY0sEUV3qZ1psN245jjZ/HgOYJ6LSw41w4qb73Mu7Bf929XQbLY7c7J1pXFAgKuuku3UmXLrHjL3/Bf8EC+ufkcG3UJAAbwjT8JrD09/ciRi5Oe5x+j//eZUyodhs2kwlzQT6m/MJbXi7m3BwsOVlYcnKxFuRhLcjHZirAbjJhNznPsqkWCw6ziazcHOrnxDIkpOzZ+UQTxGbD8DDQVMK/MtsK6xUY39L5fKUKMb8vf/uVmyGmH87jVbk4x/zIgqxUiEtQiEv1I81cH/+6nWjWqTfNmzbFZDGxaPNYWqQ6B8pRFCiwwIqLvnQd2JzIqHZg7HBbMaGqKmazlfysRPIzz5Ofb8JkzsdUkIfFasei+mO15GFT/HHYzFjN2WReWMVDA9Nd7AuWXnmJMfe9WaGyeFwFY+JGVFUlPTGRxNVLSD97jty4y5gTErGnpKJNz8A7L5+A/PziBL0oN14ZADHlDBh91ur8DW9e4rd9pQoxzcsvx8pUiLnFYyIrrRBTzoxL2xKgbSgE3GQ7e0U6jCjn0ufDiRDUAiLvoqlWrTbYfAQGd3C9fuWZHsQ8vcP1yrvFDWJi/X//S4/f/56iYTdnDx/O9JUrb27fbmg7LfvqMwau+gGfwkRlgVc4Yz/78WpvLHC2rS4WTimYmQSmwgOIdRuAzgBBYRBSiUeASrSdTKnn2Lh7P46cRPDyQxvWmAFjZ2AMqpwvvpp5glnff8DMZidK/atUFWbHRTPjpQ9v7w3KaTvhW3iQJLAL6O6sa1grXYmYKDAaWf2Xv6Bbu5a8tCvka7J5wJBTavN14c1p8vkCotqUcwSzpMKYcNismCwWTGYLBaYCCvLyMQXWwqwqWLIzsWZnYs3OwpaTjS0vF3teDo6CfBwF+agF+ajmAjCbUaxmFIsZjc2C1mZDa3fedA4beocDg2rHoDowqg6MOBN87wom+yt1ENPI9bpjOeCro9Rgg+VZroWRw1yvO3gJQq5AfT84nQlKf2ha99bKWRVW7oWYLq7XrTjVkRG/31+1BbqOSr1I0MvLiwIfH2eAuKAOHszEta4HMrolRiM0j4azx53XKoGzK1NkA+dIhBXlcNywwhn5m4fJThvH2k1rUSxmekW3xK9BI9BqaNS9P/gFk5SUzJLFP6Me2kgnNYX6hWeStQr08reC6RCsPMT++f/gXGBTQnqNoueQGLyM17SmXB0TKVUHX12flpbO1sU/YDi7nn61smmup8zc9dtS9CTW6kK7UfczskXpI9vDhsSApStLDrzOmKHOM9ALl512Jt4avfONFaVEAVw8L3rsajtFA9bU0ss1RgYOG0+BaTSb98dhM1voOmMSvUPv3LN3t0WrhXLmhr+eiMhIJnz7Leo333Bg9WrOvvEGrXbuJLrwrMc+A8wIKHvQqCFmtnzzIavmf4vBYUfnsKN32NEX/vAbVBWvwiO8Xgr4a8B4i3nPSgsMbu16XR0vOJhz46Tb4oAEE6TatWQqXuQb/LD5BEFACMZaEfiG1yOwbkPC60XitXMlSZf+R4S3A0eeM2RdDQWRmAJhRX9qDc452wKASGeS1RaVtuQAx8F0HDXrJ3LPwN7D0CoXupRoA3obYGKzPL5adpLGHQOwOJKxqyp2jQ67rQDVbsJhM6GoJhTVjEa1oMGCVrGi19icN60No86OUe/A26DiYwAfI4R54RzxVgOU0y0uJRMulz2uAThDS59/4Pp/4DtZBWPiRhRFIaRuXUImTC1dTygaZ2O/fhTg7NaWlpbG4TNnSD96lGM/fc3wSztd5v/7rBoC/Py4hIpGdfx/e/cdHtV1Lnr4t6dpNKpIIHqREL2YbiRAVAOmmmob95Y4JzeOy3HK9bk35fim+LjFjs+1HTsusR2aIfRqDIgqesdCdBASQqhrRjOzZ58/9iAQGvUyKt/7PHo0s+un8s1aa++118KgaZx1OXF63Fh8/A8ey9O7Ee7NvbVSP6imKHd8cnuXed9pwBXVzZ2f7Xc6n2cg2xAMigmPYtS/MKB5VDTFCB4VzXvXT7GGkJKbS0LRNYJ83PXYkxZCy/Bh7E/zAB69q7vm/Y73q/i1hqZ5UNRC/S4HBeijT4BiCATF5O3SaAI0/dEk9N4kiqIVL9MfQyq5zOB9bVD09aB6X2sogMGgoSiKvkxRSM92lvn7cZk7+1zeqFSQE+NeeIGFGzfy0Jo1AMzcsIHNb73FhFdeqfjYtVx32v75xwxf/4/iObXXm1owaf1+zMFBpRvrjpv6qNGaS3+23KNCQDAYDRDcAswB3t57npLfq+OO/awWE5OHDwBlALT1Xiy11F7VVzGaCesSw7KM07R3QUwonM22kmruzdRHn6Gu6k7ek+uN8KbujpwIBGa++Wbxqsz0dFa992eMh3ajqG7cfYcw8PmX6dCtko9geXPCcPYUNoMBm9WqX/C6o5yolkq0Jzxn9lGUl4s94yo3c7KwOxwU2cIpcjhwWoJxqhquwgLUggLcdjuqvRDVbsdT5ABnEWeunGOSlu6zvNpfYCKkRQRHnOifw5oHRdVvxCkeN4o3RxSDgethDsB3JSPMpg80CHDODWProHrudOmPghd/d+sXWZ1ucHsUXCqoqgG3R0H13PoOqseAR9OXXc50AG6fx3fZBtR+0DVQ6894r3zoIWYsWlRqeRHw/dtvM/mll2rvZJoGudn61bCQMO+onXUsKx0unyq93BII3YeWagVkZWay58v3cWz5hn55KcTafP+6TxUYOBnWjZCx84mb+xQhocGgqmiX9rN3dyJZyUmgqYR17EXc2PEoRhPO1v1JXLOYnG2fMsx0jg4+Lnom5ygcNfel3ZSfM3zyXAzGW8/t3fHhryjgyIT01azc9DkzJuiDV63fHsLkiSuh1QAICK/Rrw2A3KP6CIR3C+wEtsoM2CBucdjtbH33XYo+/BAt+xIPlHHx/pRTv5LapY5SY7MTRvWEgDI6bvwzFbqHGsk22CiwhuMOaQmR7TBFdcTWIZbw6B5ExfSkTZvWWMxmvbC6u+Klee/IoIGqsuWT35F/cjOBBZcoSnAx7f7SOfXhwjBaRkYQHnidjlGFdGinEVSJmwJrlsLUMhrAJ9PAGgMx9Xy1NzsfTl6C+DIucKy9OIMpz6+o36AakyqUEzfS0zkwJ4FJ6ckllmcqRvb/5HUmvfSrEsvtdjubHhnKDMeJUqdcEjmK+b/4fckTlFFOFO+kaZzYl4jnkzn0C8wssTrLaSBpwG+Y9OgLpXKCywfAbYfCLFBd+md6aEvcHli49G/Mj9pUoq2RlAZHLTae+Pk5zBYLpcqDWxX+MsoJPLlAIZhiwNROX1dP5cTGb99iqOcXtAguebHxTHoIeT0WMyhucs1jaODcbjdrO3VixrVrAJxVFLR9+4gdXMZopXerhbrToQ1riHh+Op1N+ufvTi2Q2O9P07pjJ987VLHuVBynr8Z4JcqJsnICg1F/TM9Uxv/93csqkRPLvhjE7ElpZGTCl9+254kF79GyZYTUnRqTRtCeAErkRNaNG+z6twlMtZcsfy6rAZyb90dGP/hEpXJizfql3G9b7PN06w7BhECwq/BRXluiB0SjGMygWFCMFjAEYDAEoBgtGExWDCYriqZidFzEYFAxGjWM5rYYA1pjNFkwteyNydYKkyUQk8WGxWLDbLFgsVgwm83F381mc/kj/9+VE0cO7cNw/nX6dcgtsdnu8x1pNXYFsb0GlveXqFe13vC+nJzM0dmzmXLiRPH1OTvw7cyZPLhkSfW7lzckmamQfuF21++QCGjfHSzlD5dfWFDAroV/I2ftZ3TLOE7/uyoOt1yww+HAaAwj53Ij9QjTnJuJsurbZjgUFuf1JiLERs+CQwyMLH2F56YDdhS2xxT/DAmP/TvBIZUYAV29CTc2cjXlBDbr67QIg5w8yAnYRqfeCRXvXxket/6skvO6XkgqJrC2h8AutdbFtDla+uAU5h5c53PdAe9zqa3vqHR7NH1gjzu/ijQoUgy4FAMuxYjLaMRt0EfyVE0mVJMZj0kf4EO7NaKnxYrLZMZybQ9zIgpLnfuky4b6hy30G1rL0/zkZaBdO0F2bh4nU5KwOz5mbNx1jEYotMPGfQPpn/AZMbH3AHq346ysLC6eP0xG6l6y0vehFBwjypZKhyg7rVtrBEfodar1C2FyGc/k5jngiAdGljEvbGU4nFBYpH8VOMDhMlDkNuB0G3CqRlyqGbcWgFuxoSlWPIoVj8HGjdRknr8vs9TxnC7YUvQ2k+fV4gXNZu7skcMc+9NrdDi0jRaOApI798HwwKNMfPGXPh9/OXNoP8feepER1/fQ2qRyyh3E8W4Tmfjy64QVZVe5nADYveafZK76MyO1I9hMsMPeiYKBjzHtf/2n70dw8jIg7SSl7gRHRuMKacfmhe+gXd5MYfZltIDTDBwBsbGwJHE+854qfaG8TN5ygvw0wAyWnnqPqNBoCOlY+eOUp4JyQtM0Vn35v2mR+yUjYlJxqbDtbDcs3V5hzLQf104MjUDahQukd+vGPd7nwTeHhhKfmootqIwrh7Xo7OGD2GcPo69Rv0t2TDUR9K99xPQfUP6O1aw7VUs5OUFE7fWMyL5xltyTsXRqp7dtDp15nSEDR9VrTohGrIY5cSn5Bw7+9/8l9PR2glwFpLfpQ/jUZ0hY8GzpjcvIiWxjC3Z+8ghT25ZswGfkwa4DEBzeiYJ+DzP953+s3COgfionDh4+zZXjC2nJAVSPkSzTcGJH/pLeA8oZ/dAPan86MeBmRga7/vIXTEeO4AkIwDx+PGOfe65RTH9TaZoGRXa9m5a56gNbOJ1O9q74J+nLP6TjlQMMDXKV6pK7JhsmDCx9N9GlwvpLMD265LLtmcHkdJ/BkCd/S6eYKox0rGlQtA88haA6WbvkIaYkZAGwIulHzFzwUZV/vnJ53KA59e5SStXnpRUlbfr0I+L/8DxBPq5Wft66D91efA1LcCjm4BAsIaFYg0OwBgZitVqxWq0EBARUa37gW7b+4yPaf/Mq3ZTbz1llqka2jXyB2f/n7Woft1z2HMi+AkX55BQ62XVsE4rZjjmwOwkTnqzSBT6n08mFC2c4fXQ9x9d9wK/6n/d55XfrWbga3Irg4CA8ilVvGBtsKEYbGG0YLSEYzMEYLaGYAkIxW8OwBIYTENiCAFsE1qAW2IJCCAoKwmazYbFYbhdiFeTE6aN7uL5tAQmx54uXuVVYdHIy815c0TSm3Wtg0tLSyM3OJrpr1wr/nzRNY//WTWRePEvXIfF063vPrRXVLidUVWXv9+ux5+Vw730zCK5oLtI7ckKfJqYdhJTuF7jo0wd4cLTeQyLjJqRZNtNvwPiKA7qrnMDTBkytwBoJxjr4/6sgJ7Ju3iRp+7eYzFZGjJ+nz5vezOxZuJDuDz/MrY7pC4cM4cGkpDodHyXt0kXOjetJvOIA4IJbIefjtdxzXyV7GtSw7lQllcyJatM0Vi98nGlDvwJg2z4rCdPPogS29EtOiEaqFnKisLAQu91ORERE+flfRk5cTDnFoSWv0SJzA1HWQs464IcCGDJjOYNHTai4/Cnxs/i3nMjOzsZoNBJSmZuOflAnDW9RNaqqcmDTai4tfp+olJ3E2RyYDbDGBVPLGGRnzXmYGg2HM42caRFH1/mvMXDUpOoVuO6r4DyjvzaEsnzJX5gV9yUAq7e3YdrT16r5k4n64Ha7WfT0fObsXI71jgZjYmQXWr7zNb3i4us8hsPbNnFl1WeYMy7hDm1J0MhZjJ7/eKMbIO9m5g0OvjWMCW3Pl1iuemC58wnmvvq5fwIDLp47zdGt72MuPIpHsULkOMbPepmAgEoMWyqEV5HDQeKS1kyI07vkbdodyuj517FU9H90VzlBwEC529YALH3qKeZ+/jmgP+G47tVXmf7GG3VyrrycHHYP78JEdzYAN1Q49dtPGPX4M3VyvgbPfZXVX/Rn2mi9y+u3O2Yx58llfg5KiOpLS0vj8Lr23BfvwWiEHVf+wcgxj1b+AFJOVEga3g2Mpmkc35PID1+9DSmrmNvDd3f0JefNtJj3BqMe/EnNKt6aCxxJ+ncA6yDOnbtM68K+BNn0OyKeTldo3aYRzTnTDLndbr77+APUnZsw2AtwduvLgGd+Rqfu5Qy5LHw6nrSZM8t/RkL4D0TaNA5nhHImaBrTXviEwMBmMJCNaPKOHtpMW9d9xQMQLt72APOfWV72Dj7KCQyhdR+oqJCmaSzt0YN5Z/TKbipwY8MG+k8sY5jianIWFbE6vjuzc/URtgs8sP3Z33D/r39bq+dpNDQXF5OXElawgPBQyC+A9KAjdI2twbNIQjQAS/82iLlj9UFbl24dztxnKzlThJQTlSIN7wZs1a+nM73A95ykqwImMf2/KjmFSHmcKeC+or82tQaLfot90z/CuS9OH51+1cGXmT7/rZqfS4jGwJmCx3mJvTuSyL7poE/cI3SKrsKjG0I0Aov/Po/5CUsBuJkNl1jLgCH3+964jHJCNAzZmZmc7NiReLs+I8luq5Wely7RolXtdKv2eDwsmjCEhy/rlXG3BssnPcm8Dz6rleM3Ss4Uln39Y2aP2gLA2h2tmPLkdT8HJUTNbd34MWNi9PEy9h83MXC6o3KPI0o5USmNYIr45itq9JOct9tKLb/ssBKZ8HjNT+ApBPWq/loxgvn26Ji5nvtub5a7tObnEqIx8OaEwWAgbvQI7n/419LoFk3SrMe+YcPOcAAiwuHmD/NxeBtuJZRTToiGITwyktDVq/H+lYhzONgcH4/H47vHXFUtWjC9uNENsLj/eOb+9e+1cuxGyVOI5r5CmPn2nUC39SE/BiRE7Ykb/QTHz+jNwyF93ezduaTinaScqDRpeDdg906ew4Wxb7De3oMCFxS6YKO9G8mj/kj89AU1P4Er5fZ8l6aOoNzust5r8CsUeQdZHNzzEtlZPqayEKKpKScnhGhKzGYzHQetJO2G/n7cvfms+Hpu6Q0lJxqFvuPGceiXvyyeyXZeSgrLnnqqxsdd9vLzzN2/tvj9wrZ9eGjpxkY3fketcqVw5NABEgbrF6qupsOICf/h56CEqB0BAQGcvtK3+H1q8l8r3knKiUqThncDN3bBTxn3wVEOTF9G0tTFjP7rMcY/9mLND6ze1L9ATxBTySH+e/W5l12H9bvtHdrA7m3v1fycQjRkFeSEEE1N736jSDz9SPH7SYPWcmDvHXPCS040KtP+9CeWDh1a/H78l1+y++uvq328DW/9gftWfITZ28ZeEdSOBzbsw+Br2ofmwpsTKSe+Kp7qOelULJEto/wblxC1KKLjj4pfd4pIQlXVsjeWcqJKmvGnZ+NhsVhImDKLMdPm1c4IxpqmX526xdy11NQUiqKQ6Rhd/N6R8U3NzytEQ1WJnBCiKZr16OesTYwEIDwUCs4voLCgQHKikZq5dSubwsIAaAHYnnyS1HPnqnyc3Yu+YsAHrxHirSVuNoQyZssxrM15gElvTrjdKtFRx4oXB7d93o9BCVH74sc8w8kUPfmH9Xexb/e/fG8o5USVScO7OVKv6s9jABjDwOT7Sm3X/i9x6yJXv5gUCvLz6ylAIepZJXNCiKbGZDIRc+8qrqbr7xOGFLLy6wckJxqpQJuNmO+/J8V7V/oet5v98fG4XK5KH+P4ti1E/epxWnvrz0meAHqtO0BYRET5OzZ13pzYuX0tg/vqlaPjyQZGjf+pnwMTonZZrVZOXe5d/P7y6b/43lDKiSqThndzo7nAdeH2e3NsmZsOGDyBPUf0O+yxnTV2bfu4joMTwg+qkBNCNEU9e8ex++zt54GnDNvM3sQ7Bs+SnGhUug4cyMU338RbHWZGejrfzphRqX0vnjqB+6lJdDXpz2uedhsJW7iV9jHN/H/gjnLixtXbc3WfujoUq9Xqp6CEqDth7Z8tft2xxd7SgzVK3alapOHd3LgugOYdfsXUBgwhZW6qKArX8oYDcPos7E98h2upl+ohSCHqURVyQoimatYjf2PVNn36qdBgUG/8P/LzCiQnGqnxL73EysmTi9/PWL+e7959t9x9bqRd4+KMYQww6p+HV92Q/94SegwdXpehNg7eciI3J5+B3S8A4PFAp96/9GtYQtSVEWOe44dz+gAPw/o52b93VckNpO5ULdLwbk48BaCm6q8VI5ijK9zFGDqD5RvBbIJXHr/C1X0DWfr5YxQWFla4rxANXjVyQoimyGg00mvUOi5f0yta8QOdrFn+muREIzZ31SpWtmkDgA3o/MornD140Oe2Bfn57J3QnwTvffIsFZJ/9R5Dps+qr3AbrjvKiR3bFxPjHTtq1yErQ+Nm+jEwIepOoM3GiYv6XNwGA1w6+e7tlVJ3qjZpeDcnrrN3DPffqcLh/ouKitByvmTWROjaGSwWGNLnJrPjv2LNomfL3VeIRqGKOSFEUxbbfTD7z88rfj8t/gg7ty/2Y0SiJkwmE0N37eKoyQRArMfD+bFj9cHz7uB2u1kzYSBTi/S55Rwe2PHovzP2xz+r95gbpDvKCTV/Y/Hi9MKJzXuEd9HkhbR9uvh1u9Ddt7ubS92p2uQTo7lQM28P92+wVmq4/22bPmFK3JFSyw0G6B61lksXkms7SiHqTzVyQogmTc1k5uwfs2KLPohWkA2MN54jNyfbv3GJamsbHU3hF1+Q5X0/ITeXlWPHFq/XNI1F0xOYn6mPTOzRYMWY+Uz//X/5IdoG6I5y4kpqJiPu0UchLCiEfvG/8WdkQtS5EWOf58xFvRfUvf2LOJi0TupONSQN7+ZA8+hXp24xxYBS8Z9edZzCWsZFrP7dczh5bGuthCdEvatmTgjRZHlzwmAw0H/EG1y4qle2ht9TxNqFU/wcnKiJ4QsW8N3jjwOgARGH9vHpkO6snzeBdwbHMvzk7uJt/9ljBPM/WeinSBuYu8qJpJ0LiQjXX28/GEH3HoP8E5cQ9cQWFMSxcz0AMBrhwom3pe5UQ/LbasrUHHCmgGMnuNP0ZVUY7t9DeHFPkrtl3DQQ0bJL7cQpRH2pYU4I0eT4yIno2EEcTn2heJMZ8btJ3PKpvyIUtWD2Z5+xpGtXFgbC8I7wTM4ZJh/+jpfzznFdhSNFsLhlNx5csRVFUfwdrn/5yAnNEEqoYUPxJs6AB/0VnRD1Kqj1E8Wv2wTvQHNd099I3alaFE0rq2klGjVnMrhTATc4T4GmgiEMgueAMbRSh0i9epHLSUO4t9+NUuv+tX04M5/aJQW0aDxqISeEaFLKyQmPEsyKTzoza9wVAPYftxA7OpXwFpH+jVlU2/ovP2PQb54mylR63d8LTTz4QxZBwcH1H1hDUkZOHDvbmh7WqVgskJYBxq6ptIpq6+9ohahz+ZkHuX50MDEdwe2Go6k/YtDg4VJ3qia5490UqTe8BQfgvqYXHKCPPKjlV/ow7dp3xh70e/afiLh9aBXW7epGj2FvSaNbNB61lBNCNBkV5ITBYGDwxI2cvaR/zg/u4+TTd+JYv/JdknatQ67ZNz6e/Yk+G90AIwMVrl64UK/xNDjl5MQPB/+IxaK/3XMiWhrdonlQbxAcmMvhMx0AcKtw6MB3qB5F6k7VVMZHsGjU3PrgH2h28GTqrxUDmNqCmg6mdpU+1JiJP+Hi+XGs3vcpRm6imWIYOfOnhIaF1UHgQtSRWswJIZqESuREpy69WJX0C8ymP5N0BB6aeIb2bV7ieqaRZZ/GMXjc/6dLTF///QyiSgzOojLXhaouruXm1GM0DVAZOeEmik6Re4o3C4z6kR+CE8IPvDmhWeJZtmExocHQL+Ys61f8DsW2l/vn/bfchKsiaXg3Sd4J7dXr+kgqAMbWgPn2ZPdV0Dm6B52j36i16ISof7WbE0I0fpXLialz/8CHr7/Lvy243WiLilSZM2YH3255mo6dd2M0GusvbFFtWq8BuDZ/g9lHPflwh56MGzK0/oNqUHznxK7E70nop687mWIgYcILvncXoslxo6oqhdmHeXQq3G5jXyAv/0NWLgpm5kMyA0JVSFfzpsgQrn83dQRTG1CsYGxVcp0QzYnkhBAlVTIn9u1ew9xJLp+HmDB4Hzu+lxGwG4vRz/2UldGDSy2/rphg1uNYbvWlbq7KyInrl5cWb3Ly8iACbTb/xCdEfTOEk7j9O2aOTubuG9shwRBh+Jqsmzf9E1sjJQ3vpsjUTp9bDwMY24Clh/5aMct8e6J5kpwQoqRK5kRWxnGiIj0+DxEWAva85PqJV9SYzWZj5N+X869xj7AluC37jUGsjh7MsZfeZPLLv/Z3eP7nIyfy8xwMiD0PgMcD7Xu+6t8YhahPpnY48pMJDfG9Ov6ea+zbvaJ+Y2rkpKt5U6SYIWAguC6AmgFoYIwEUxdvoSJEMyM5IURJlcyJwOBO5OXrdzfu5igCU4CMj9CYtO7YkQc++gq73U5BQQGDIiIwGOQeDOAzJxITV3P/AL3f+e4jAcTNmevXEIWoV4oZj7F9masLCiEwqEU9BtT4yXRiQgghhPBJVVVWfTGUBxIOlVq3KrEXExccIiAgwA+RCVF3jh3exsXTn5GdupAWIUW0CIPU/CnMfXqNv0MTol6dPLYX8/WxdOtsL7Vu7a7+THrkoIzzUQVymVMIIYQQPhmNRnoMe59ViX0o8o6v5nTC2p3d6TLgfWl0iyZn++ZPMGfMZNqQL3h0RhFTx0KX9pBrj/J3aELUu9797uV4+k+4nlmyk/SR5FZExrwmje4qkjveQgghhCiXw+Eg8btP8Tgvgakdo8Y/h00GmRJNjN1uZ/u3/Zk0PKXUuqPJoYT2TKJLTA8/RCaEf+3Yuoica8swchMX0XTr/xw9+zT3mRCqThreQgghhBCi2du87jNGdXqasjpyrD3yH0yZ85/1G5QQosmQruZCCCGEEKLZcznzKW9WNYNSVPZKIYSogDS8hRBCCCFEszdg6Ez2n4j0uS4tw0hEmzH1G5AQokmRhrcQQgghhGj22rbrxMXc+RTeNYCzxwNbjk5maNz9/glMCNEkyDPeQgghhBBCAB6Ph3XLf4dSsIyWIRfJKoiikIlMmv2mDCgohKgRaXgLIYQQQghxB1VVycnJISQkBLPZ7O9whBBNgDS8hRBCCCGEEEKIOiTPeAshhBBCCCGEEHVIGt5CCCGEEEIIIUQdkoa3EEIIIYQQQghRh6ThLYQQQgghhBBC1CFpeAshhBBCCCGEEHVIGt5CCCGEEEIIIUQdkoa3EEIIIYQQQghRh6ThLYQQQgghhBBC1CFpeAshhBBCCCGEEHXofwDVxpVIEhmuhQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Plotting before the user's choice of the latent dimensions to use in the next step\n", - "from keypoint_moseq import load_pca, plot_scree, plot_pcs\n", - "from element_moseq.readers.kpms_reader import load_dj_config\n", - "\n", - "output_dir = (kpms_pca.PCATask & key).fetch1(\"output_dir\")\n", - "config = load_dj_config(output_dir, check_if_valid=False, build_indexes=False)\n", - "\n", - "pca = load_pca(output_dir)\n", - "\n", - "plot_scree(pca, project_dir=output_dir)\n", - "plot_pcs(pca, project_dir=output_dir, **config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "kpms_test", - "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.18" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/tutorial.ipynb b/notebooks/tutorial.ipynb new file mode 100644 index 0000000..12621a9 --- /dev/null +++ b/notebooks/tutorial.ipynb @@ -0,0 +1,665 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DataJoint Element for Motion Sequencing with Keypoint MoSeq\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Open-source Data Pipeline for Motion Sequencing in Neurophysiology**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to the tutorial for the DataJoint Element for motion sequencing analysis. This tutorial aims to provide a comprehensive understanding of the open-source data pipeline by `element-moseq`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "![pipeline](../images/flowchart.svg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "if os.path.basename(os.getcwd()) == \"notebooks\":\n", + " os.chdir(\"..\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import datajoint as dj\n", + "from pathlib import Path\n", + "import numpy as np\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dj.list_schemas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_model\").drop()\n", + "dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_pca\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from tutorial_pipeline import lab, subject, session, kpms_pca, kpms_model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. FIT PCA MODEL AND LATENT DIMENSIONS\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " dj.Diagram(subject.Subject)\n", + " + dj.Diagram(session.Session)\n", + " + dj.Diagram(kpms_pca)\n", + " + dj.Diagram(kpms_model)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.KeypointSet()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Subject and Session tables\n", + "subject.Subject.insert1(\n", + " dict(\n", + " subject=\"subject1\",\n", + " sex=\"F\",\n", + " subject_birth_date=\"2020-01-01\",\n", + " subject_description=\"test\",\n", + " ),\n", + " skip_duplicates=True,\n", + ")\n", + "\n", + "# Definition of the dictionary named \"session_keys\"\n", + "session_keys = [\n", + " dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\"),\n", + " dict(subject=\"subject1\", session_datetime=\"2021-06-03 14:43:10\"),\n", + "]\n", + "\n", + "# Insert this dictionary in the Session table\n", + "session.Session.insert(session_keys, skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PoseEstimationMethod()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpset_key = dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\", kpset_id=1)\n", + "\n", + "kpms_pca.KeypointSet.insert1(\n", + " {\n", + " **kpset_key,\n", + " \"format_method\": \"deeplabcut\",\n", + " \"kpset_config_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data\",\n", + " \"kpset_videos_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos\",\n", + " \"kpset_desc\": \"testing kpms pca schema\",\n", + " },\n", + " skip_duplicates=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.KeypointSet()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "video_files = [\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4\",\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4\",\n", + " \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4\",\n", + "]\n", + "\n", + "kpms_pca.KeypointSet.VideoFile.insert(\n", + " (\n", + " {**kpset_key, \"video_id\": v_idx, \"video_path\": Path(f)}\n", + " for v_idx, f in enumerate(video_files)\n", + " ),\n", + " skip_duplicates=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.KeypointSet.VideoFile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.RecordingInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.RecordingInfo.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.RecordingInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.Bodyparts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bodypart_key = {**kpset_key, \"bodyparts_id\": 1}\n", + "kpms_pca.Bodyparts.insert1(\n", + " {\n", + " **bodypart_key,\n", + " \"anterior_bodyparts\": [\"nose\"],\n", + " \"posterior_bodyparts\": [\"spine4\"],\n", + " \"use_bodyparts\": [\n", + " \"spine4\",\n", + " \"spine3\",\n", + " \"spine2\",\n", + " \"spine1\",\n", + " \"head\",\n", + " \"nose\",\n", + " \"right ear\",\n", + " \"left ear\",\n", + " ],\n", + " },\n", + " skip_duplicates=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.Bodyparts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCATask()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCATask.insert1(\n", + " {\n", + " **bodypart_key,\n", + " \"output_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_testing\",\n", + " \"task_mode\": \"trigger\",\n", + " },\n", + " skip_duplicates=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCATask()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "key = (kpms_pca.PCATask & \"task_mode = 'trigger'\").fetch1(\"KEY\")\n", + "key" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.FormattedDataset()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.FormattedDataset.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.FormattedDataset()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `PCAFitting` computation will fit a PCA model to aligned and centered keypoint coordinates\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCAFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCAFitting.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.PCAFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.DimsExplainedVariance()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.DimsExplainedVariance.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_pca.DimsExplainedVariance()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plotting before the user's choice of the latent dimensions to use in the next step\n", + "from keypoint_moseq import load_pca, plot_scree, plot_pcs\n", + "from element_moseq.readers.kpms_reader import load_dj_config\n", + "\n", + "output_dir = (kpms_pca.PCATask & key).fetch1(\"output_dir\")\n", + "config = load_dj_config(output_dir, check_if_valid=False, build_indexes=False)\n", + "\n", + "pca = load_pca(output_dir)\n", + "\n", + "plot_scree(pca, project_dir=output_dir)\n", + "plot_pcs(pca, project_dir=output_dir, **config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. KPMS Model prefitting and full fitting\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. **Initialization**: Auto-regressive (AR) parameters and syllable sequences are randomly initialized using pose trajectories from PCA\n", + "2. **Fitting an AR-HMM**: AR parameters, transition probabilities and syllable sequences are iteratively updated through Gibbs sampling\n", + "3. **Fitting the full model**: all params, including both AR-HMM as well as centroid, heading, noise-estimates and continuous latent states (i.e. pose trajectories) are iteratively updated through Gibss sampling. Step useful for noisy data.\n", + "4. **Extracting model results**: the learned states of the model are parsed and saved to disk for visualization and downstream analysis.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(\n", + " dj.Diagram(subject.Subject)\n", + " + dj.Diagram(session.Session)\n", + " + dj.Diagram(kpms_pca)\n", + " + dj.Diagram(kpms_model)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Adjust `kappa` hyperparameter to achieve the desired distribution of syllable durations. Higher values of kappa lead to longer syllables.\n", + "\n", + "Let's chose a kappa value that yields a median syllable duration of 12 frames.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fps = kpms_pca.RecordingInfo.fetch1(\"fps_average\")\n", + "kappa_min = (12 / fps) * 1000 #ms\n", + "kappa_max = 1e6 #ms \n", + "kappa_range = np.logspace(np.log10(kappa_min), np.log10(kappa_max), num=3)\n", + "print('kappa range = {} ms'.format(kappa_range))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For rodents it's recommended a target duration of ~400ms\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kappa value in the config is only used during model initialization.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prefitting_key = {\n", + " **key,\n", + " 'pre_latent_dim': 4,\n", + " 'pre_kappa': 10000,\n", + " 'pre_num_iterations': 2,\n", + " 'pre_fitting_desc': \"initialization of model\",\n", + " 'model_initialization': 'Yes',\n", + "} \n", + "\n", + "kpms_model.PreFittingTask.insert1(prefitting_key, skip_duplicates=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# prefitting_keys = [{\n", + "# **key,\n", + "# 'latent_dim': 3,\n", + "# 'kappa': int(i),\n", + "# 'num_iterations': 50,\n", + "# 'pre_fitting_desc': f\"Prefitting {c}\"\n", + "# } for c, i in enumerate(kappa_range, start=1)]\n", + "\n", + "# prefitting_keys" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# for prefitting_key in prefitting_keys:\n", + "# kpms_model.PreFittingTask.insert1(prefitting_key, skip_duplicates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.PreFittingTask()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.PreFitting.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.PreFitting()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.FullFittingTask()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fullfitting_key = ({**key,\n", + " 'full_latent_dim': 4,\n", + " 'full_kappa': 10000,\n", + " 'full_num_iterations':2,\n", + " 'full_fitting_desc':\"Testing full fitting model and generate results\",\n", + " 'task_mode':'trigger',\n", + " 'sort_syllables':True,\n", + " 'results_as_csv':True,\n", + " 'visualizations':True})\n", + "\n", + "kpms_model.FullFittingTask.insert1(fullfitting_key, skip_duplicates=True) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.FullFittingTask()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.FullFitting.populate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.FullFitting()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Generate results\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kpms_model.GenerateResults.populate()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "kpms_test", + "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.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From aafbc4a3f004fa1faef5469a324ba8b1a85dd3bb Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 13 Mar 2024 17:38:29 +0100 Subject: [PATCH 67/90] Update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a2f2d8..92415cc 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ tables that can be combined with other Elements to assemble a fully functional p ## Experiment Flowchart -![flowchart]() +![pipeline](../images/flowchart.svg) ## Data Pipeline Diagram -![pipeline]() +![pipeline](../images/pipeline.svg) ## Getting Started From 0ead1ea82db724db9507f0a6032c4b18eea8063a Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 13 Mar 2024 17:38:47 +0100 Subject: [PATCH 68/90] Update logic in `GenerateResults` --- element_moseq/kpms_model.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/element_moseq/kpms_model.py b/element_moseq/kpms_model.py index a92d8e7..4d6805c 100644 --- a/element_moseq/kpms_model.py +++ b/element_moseq/kpms_model.py @@ -430,7 +430,18 @@ def make(self, key): """ output_dir = (PCATask & key).fetch1("output_dir") - model_name = (PreFitting & key).fetch1("model_name") + try: + selected_key = ( + PreFitting + & "pre_latent_dim = {}".format(key["full_latent_dim"]) + & "pre_kappa = {}".format(key["full_kappa"]) + ) + model_name, pre_num_iterations = selected_key.fetch1( + "model_name", "pre_num_iterations" + ) + except: + print("No prefitting model found") + sort_syllables, results_as_csv, visualizations = (FullFittingTask & key).fetch1( "sort_syllables", "results_as_csv", "visualizations" ) From b1e2b2607eec56cdb83b558c75c585aaeca0b33f Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 13 Mar 2024 17:45:43 +0100 Subject: [PATCH 69/90] update `tutorial.ipynb` (WIP) --- notebooks/tutorial.ipynb | 3834 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 3704 insertions(+), 130 deletions(-) diff --git a/notebooks/tutorial.ipynb b/notebooks/tutorial.ipynb index 12621a9..b18db59 100644 --- a/notebooks/tutorial.ipynb +++ b/notebooks/tutorial.ipynb @@ -22,17 +22,104 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![pipeline](../images/flowchart.svg)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The package is designed to seamlessly integrate the **PCA fitting**, **model fitting** through **initialization**, **fitting an AR-HMM**, and **fitting the full model** into a data pipeline and streamline model and video management using DataJoint.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![pipeline](../images/pipeline.svg)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By the end of this tutorial, you will have a clear grasp of how to set up and integrate the `Element MoSeq` into your specific research projects and your lab.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prerequisites\n", + "\n", + "Please see the [datajoint tutorials GitHub repository](https://github.com/datajoint/datajoint-tutorials/tree/main) proceeding.\n", + "A basic understanding of the following DataJoint concepts will be beneficial to your understanding of this tutorial:\n", + "\n", + "1. The `Imported` and `Computed` tables types in `datajoint-python`.\n", + "2. The functionality of the `.populate()` method.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Tutorial Overview**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Setup\n", + "- _Activate_ the DataJoint pipeline\n", + "- _Insert_ example data into subject and session tables\n", + "- _Insert_ the keypoint data from pose estimation and the body parts in the DataJoint pipeline\n", + "- _Fit a PCA model_ to aligned and centered keypoint coordinates and _select_ the latent dimension\n", + "- _Fit the AR-HMM and the full model_\n", + "- _Generate and store_ the model results and visualizations\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Setup**\n" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "![pipeline](../images/flowchart.svg)" + "This tutorial loads the keypoint data extracted by DeepLabCut of a single freely moving mouse in an open-field environment. The goal is to link this point tracking to pose dynamics by identifying its behavioral modules (\"syllables\") without human supervision. The modeling results are stored as a `.h5` file (and optionally a directory of `.csv` files) that contain the following information:\n", + "\n", + "- Behavior modules as \"syllables\": the syllable label assigned to each frame (i.e. the state indexes assigned by the model)\n", + "- Centroid and heading in each frame, as estimated by the model, that capture the animal's overall position in allocentric coordinates\n", + "- Latent state: low-dimensional representation of the animal's pose in each frame. These are similar to PCA scores, are modified to reflect the pose dynamics and noise estimates inferred by the model.\n", + "\n", + "The results of this Element example can be combined with **other modalities** to create a complete customizable data pipeline for your specific lab or study. For instance, you can combine `element-moseq` with `element-deeplabcut` and `element-calcium-imaging` to characterize the neural activity along with natural sub-second rhythmicity in mouse movement.\n", + "\n", + "#### Steps to Run the Element-MoSeq\n", + "\n", + "The input data for this data pipeline is as follows:\n", + "\n", + "- A DeepLabCut (DLC) project folder with its config file, video set and keypoint data.\n", + "- Selection of the anterior, posterior, and use bodyparts.\n", + " This tutorial includes this DLC project folder with example data and the results as well in `example_data` directory.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start this tutorial by importing the packages necessary to run the data pipeline.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -44,39 +131,199 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import datajoint as dj\n", "from pathlib import Path\n", - "import numpy as np\n" + "import numpy as np" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "dj.list_schemas()" + "If the tutorial is run in Codespaces, a private, local database server is created and made available for you. This is where we will insert and store our processed results.\n", + "\n", + "Let's connect to the database server.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2024-03-13 17:32:11,291][INFO]: Connecting root@localhost:3306\n", + "[2024-03-13 17:32:11,319][INFO]: Connected root@localhost:3306\n" + ] + }, + { + "data": { + "text/plain": [ + "DataJoint connection (connected) root@localhost:3306" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dj.conn()" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_model\").drop()\n", - "dj.schema(\"vathes-team_devlab_mila_kpmstest_kpms_pca\")" + "### **Activate the DataJoint pipeline**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial presumes that the `element-moseq` has been pre-configured and instantiated, with the database linked downstream to pre-existing `subject` and `session` tables. Please refer to the `tutorial_pipeline.py` for the source code.\n", + "\n", + "Now, we will proceed to import the essential schemas required to construct this data pipeline, with particular attention to the primary components: `kpms_pca` and `kpms_model`.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2024-03-13 17:32:11,328][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + ] + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'plotly': 'https://cdn.plot.ly/plotly-2.18.0.min', 'tabulator': 'https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.0/dist/js/tabulator', 'moment': 'https://cdn.jsdelivr.net/npm/luxon/build/global/luxon.min', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"plotly\"], function(Plotly) {\n\twindow.Plotly = Plotly\n\ton_load()\n })\n require([\"tabulator\"], function(Tabulator) {\n\twindow.Tabulator = Tabulator\n\ton_load()\n })\n require([\"moment\"], function(moment) {\n\twindow.moment = moment\n\ton_load()\n })\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 12;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['Plotly'] !== undefined) && (!(window['Plotly'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/plotlyplot/plotly-2.18.0.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Tabulator'] !== undefined) && (!(window['Tabulator'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['moment'] !== undefined) && (!(window['moment'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/luxon/build/global/luxon.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.4/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.4/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/jquery/jquery.slim.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/plotlyplot/plotly-2.18.0.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/luxon/build/global/luxon.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.2.min.js\", \"https://cdn.holoviz.org/panel/1.3.4/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [\"https://cdn.holoviz.org/panel/1.3.4/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/css/tabulator_simple.min.css\"];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\".tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:10}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:\\\"\\\";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}\\n/*# sourceMappingURL=tabulator_simple.min.css.map */\");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "94587c3b-f52d-44fc-b1d8-cf67301da0d3" + } + }, + "output_type": "display_data" + } + ], "source": [ "from tutorial_pipeline import lab, subject, session, kpms_pca, kpms_model" ] @@ -85,14 +332,251 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. FIT PCA MODEL AND LATENT DIMENSIONS\n" + "We can represent the tables in the `kpms_pca` and `kpms_model` schemas as well as some of the upstream dependencies to `session` and `subject` schemas as a diagram.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_model.FullFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_model.PreFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet\n", + "\n", + "\n", + "kpms_pca.KeypointSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting->kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "subject.Subject\n", + "\n", + "\n", + "subject.Subject\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "session.Session\n", + "\n", + "\n", + "session.Session\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "subject.Subject->session.Session\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod->kpms_pca.KeypointSet\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.FormattedDataset->kpms_pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "session.Session->kpms_pca.KeypointSet\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCATask\n", + "\n", + "\n", + "kpms_pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCATask->kpms_pca.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask->kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask->kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.Bodyparts->kpms_pca.PCATask\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(\n", " dj.Diagram(subject.Subject)\n", @@ -102,22 +586,366 @@ ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As evident from the diagram, this data pipeline encompasses several tables associated with different keypoint-MoSeq components like pca, pre-fitting of AR-HMM, and full fitting of the model. A few tables, such as `subject.Subject` or `session.Session`, while important for a complete pipeline, fall outside the scope of the `element-moseq` tutorial, and will therefore, not be explored extensively here. The primary focus of this tutorial will be on the `kpms_pca` and `kpms_model` schemas.\n" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", + "\n", + "\n", + "kpms_pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_pca.DimsExplainedVariance\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_model.FullFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCAFitting->kpms_model.PreFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet\n", + "\n", + "\n", + "kpms_pca.KeypointSet\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", + "\n", + "\n", + "kpms_pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.RecordingInfo\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", + "\n", + "\n", + "kpms_pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.Bodyparts\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting->kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", + "\n", + "\n", + "kpms_pca.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.FormattedDataset->kpms_pca.PCAFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCATask\n", + "\n", + "\n", + "kpms_pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PCATask->kpms_pca.FormattedDataset\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.Bodyparts->kpms_pca.PCATask\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask->kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask->kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_pca.PoseEstimationMethod->kpms_pca.KeypointSet\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "kpms_pca.KeypointSet()" + "(\n", + " dj.Diagram(kpms_pca)\n", + " + dj.Diagram(kpms_model)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Insert example data into subject and session tables\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's delve into the `subject.Subject` and `session.Session` tables and include some example data.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

subject_nickname

\n", + " \n", + "
\n", + "

sex

\n", + " \n", + "
\n", + "

subject_birth_date

\n", + " \n", + "
\n", + "

subject_description

\n", + " \n", + "
subject1F2020-01-01test
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject subject_nickna sex subject_birth_ subject_descri\n", + "+----------+ +------------+ +-----+ +------------+ +------------+\n", + "subject1 F 2020-01-01 test \n", + " (Total: 1)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subject.Subject()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add a new entry for a subject in the `Subject` table:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ - "# Subject and Session tables\n", "subject.Subject.insert1(\n", " dict(\n", " subject=\"subject1\",\n", @@ -126,8 +954,22 @@ " subject_description=\"test\",\n", " ),\n", " skip_duplicates=True,\n", - ")\n", - "\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create session keys and input them into the `Session` table:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ "# Definition of the dictionary named \"session_keys\"\n", "session_keys = [\n", " dict(subject=\"subject1\", session_datetime=\"2021-06-02 14:04:22\"),\n", @@ -138,18 +980,221 @@ "session.Session.insert(session_keys, skip_duplicates=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Confirm the inserted data:\n" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
subject12021-06-02 14:04:22
subject12021-06-03 14:43:10
\n", + " \n", + "

Total: 2

\n", + " " + ], + "text/plain": [ + "*subject *session_datet\n", + "+----------+ +------------+\n", + "subject1 2021-06-02 14:\n", + "subject1 2021-06-03 14:\n", + " (Total: 2)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "session.Session()" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [], + "source": [ + "### Insert the keypoint data from pose estimation and the body parts in the DataJoint pipeline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " Parameters used to obtain the keypoints data based on a specific pose estimation method.\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

format_method

\n", + " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", + "
\n", + "

pose_estimation_desc

\n", + " Optional. Pose estimation method description\n", + "
anipose`.csv` files generated by anipose analysis
deeplabcut`.csv` and `.h5/.hdf5` files generated by DeepLabcut analysis
facemap`.h5` files generated by Facemap analysis
nwb`.nwb` files with Neurodata Without Borders (NWB) format
sleap`.slp` and `.h5/.hdf5` files generated by SLEAP analysis
sleap-anipose`.h5/.hdf5` files generated by sleap-anipose analysis
\n", + " \n", + "

Total: 6

\n", + " " + ], + "text/plain": [ + "*format_method pose_estimatio\n", + "+------------+ +------------+\n", + "anipose `.csv` files g\n", + "deeplabcut `.csv` and `.h\n", + "facemap `.h5` files ge\n", + "nwb `.nwb` files w\n", + "sleap `.slp` and `.h\n", + "sleap-anipose `.h5/.hdf5` fi\n", + " (Total: 6)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.PoseEstimationMethod()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -169,16 +1214,120 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

format_method

\n", + " deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap,\n", + "
\n", + "

kpset_config_dir

\n", + " Path relative to root data directory where the config file is located\n", + "
\n", + "

kpset_videos_dir

\n", + " Path relative to root data directory where the videos and their keypoints are located\n", + "
\n", + "

kpset_desc

\n", + " Optional. User-entered description\n", + "
subject12021-06-02 14:04:221deeplabcut/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videostesting kpms pca schema
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id format_method kpset_config_d kpset_videos_d kpset_desc \n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 deeplabcut /Users/milagro /Users/milagro testing kpms p\n", + " (Total: 1)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.KeypointSet()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -199,25 +1348,232 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

video_id

\n", + " \n", + "
\n", + "

video_path

\n", + " Filepath of each video, relative to root data directory\n", + "
subject12021-06-02 14:04:2210/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_11_8_one_mouse.top.ir.Mp4
subject12021-06-02 14:04:2211/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6a_1.top.ir.mp4
subject12021-06-02 14:04:2212/Users/milagros/Documents/datajoint-elements/element-moseq/data/inbox/input_data/videos/21_12_2_def6b_2.top.ir.mp4
\n", + " \n", + "

Total: 3

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *video_id video_path \n", + "+----------+ +------------+ +----------+ +----------+ +------------+\n", + "subject1 2021-06-02 14: 1 0 /Users/milagro\n", + "subject1 2021-06-02 14: 1 1 /Users/milagro\n", + "subject1 2021-06-02 14: 1 2 /Users/milagro\n", + " (Total: 3)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.KeypointSet.VideoFile()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

px_height_average

\n", + " Average height of the video set (pixels)\n", + "
\n", + "

px_width_average

\n", + " Average width of the video set (pixels)\n", + "
\n", + "

nframes_average

\n", + " Average number of frames of the video set (frames)\n", + "
\n", + "

fps_average

\n", + " Optional. Average frames per second of the video set (Hz)\n", + "
\n", + "

recording_duration_average

\n", + " Average video duration (s) of the video set (nframes / fps)\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id px_height_aver px_width_avera nframes_averag fps_average recording_dura\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.RecordingInfo()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -226,25 +1582,234 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

px_height_average

\n", + " Average height of the video set (pixels)\n", + "
\n", + "

px_width_average

\n", + " Average width of the video set (pixels)\n", + "
\n", + "

nframes_average

\n", + " Average number of frames of the video set (frames)\n", + "
\n", + "

fps_average

\n", + " Optional. Average frames per second of the video set (Hz)\n", + "
\n", + "

recording_duration_average

\n", + " Average video duration (s) of the video set (nframes / fps)\n", + "
subject12021-06-02 14:04:22157664095517303183.0
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id px_height_aver px_width_avera nframes_averag fps_average recording_dura\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 576 640 95517 30 3183.0 \n", + " (Total: 1)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.RecordingInfo()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

bodyparts_desc

\n", + " Optional. User-entered description.\n", + "
\n", + "

anterior_bodyparts

\n", + " List of strings of anterior bodyparts\n", + "
\n", + "

posterior_bodyparts

\n", + " List of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " List of strings of bodyparts to be used\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id bodyparts_desc anterior_b posterior_ use_bodypa\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.Bodyparts()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -271,32 +1836,242 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

bodyparts_desc

\n", + " Optional. User-entered description.\n", + "
\n", + "

anterior_bodyparts

\n", + " List of strings of anterior bodyparts\n", + "
\n", + "

posterior_bodyparts

\n", + " List of strings of posterior bodyparts\n", + "
\n", + "

use_bodyparts

\n", + " List of strings of bodyparts to be used\n", + "
subject12021-06-02 14:04:2211=BLOB==BLOB==BLOB=
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id bodyparts_desc anterior_b posterior_ use_bodypa\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +--------+ +--------+ +--------+\n", + "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", + " (Total: 1)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.Bodyparts()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit a PCA model to aligned and centered keypoint coordinates and select the latent dimension\n" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

output_dir

\n", + " KPMS's output directory relative to root\n", + "
\n", + "

task_mode

\n", + " default = 'load': load computed analysis results, 'trigger': trigger computation\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id output_dir task_mode \n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.PCATask()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "kpms_pca.PCATask.insert1(\n", " {\n", " **bodypart_key,\n", - " \"output_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_testing\",\n", + " \"output_dir\": \"/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_tutorial\",\n", " \"task_mode\": \"trigger\",\n", " },\n", " skip_duplicates=True,\n", @@ -305,18 +2080,132 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

output_dir

\n", + " KPMS's output directory relative to root\n", + "
\n", + "

task_mode

\n", + " default = 'load': load computed analysis results, 'trigger': trigger computation\n", + "
subject12021-06-02 14:04:2211/Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_tutorialtrigger
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id output_dir task_mode \n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+\n", + "subject1 2021-06-02 14: 1 1 /Users/milagro trigger \n", + " (Total: 1)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.PCATask()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'subject': 'subject1',\n", + " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", + " 'kpset_id': 1,\n", + " 'bodyparts_id': 1}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "key = (kpms_pca.PCATask & \"task_mode = 'trigger'\").fetch1(\"KEY\")\n", "key" @@ -324,27 +2213,252 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

coordinates

\n", + " Keypoint coordinates\n", + "
\n", + "

confidences

\n", + " Keypoint confidences\n", + "
\n", + "

formatted_bodyparts

\n", + " Formatted bodyparts\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id coordinate confidence formatted_\n", + "+---------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.FormattedDataset()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The directory `/Users/milagros/Documents/datajoint-elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial` already exists. Use\n", + "`overwrite=True` or pick a different name\n", + "ACTION REQUIRED: `anterior_bodyparts` contains BODYPART1 which is not\n", + " one of the options in `use_bodyparts`.\n", + "\n", + "ACTION REQUIRED: `posterior_bodyparts` contains BODYPART3 which is not\n", + " one of the options in `use_bodyparts`.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading keypoints: 100%|████████████████| 10/10 [00:00<00:00, 28.63it/s]\n" + ] + } + ], "source": [ - "kpms_pca.FormattedDataset.populate()" + "kpms_pca.FormattedDataset.populate(key)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

coordinates

\n", + " Keypoint coordinates\n", + "
\n", + "

confidences

\n", + " Keypoint confidences\n", + "
\n", + "

formatted_bodyparts

\n", + " Formatted bodyparts\n", + "
subject12021-06-02 14:04:2211=BLOB==BLOB==BLOB=
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id coordinate confidence formatted_\n", + "+----------+ +------------+ +----------+ +------------+ +--------+ +--------+ +--------+\n", + "subject1 2021-06-02 14: 1 1 =BLOB= =BLOB= =BLOB= \n", + " (Total: 1)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.FormattedDataset()" ] @@ -358,63 +2472,474 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_fitting_time

\n", + " Time of generation of the PCA fitting analysis\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", + "+---------+ +------------+ +----------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.PCAFitting()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ - "kpms_pca.PCAFitting.populate()" + "kpms_pca.PCAFitting.populate(key)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pca_fitting_time

\n", + " Time of generation of the PCA fitting analysis\n", + "
subject12021-06-02 14:04:22112024-03-13 16:32:23
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id pca_fitting_ti\n", + "+----------+ +------------+ +----------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 2024-03-13 16:\n", + " (Total: 1)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.PCAFitting()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

variance_percentage

\n", + " Percentage of variance explained by the selected components.\n", + "
\n", + "

dims_explained_variance

\n", + " Number of components required to explain the specified variance.\n", + "
\n", + "

latent_dim_desc

\n", + " Description of the latent dimensions that explain the specified variance.\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id variance_perce dims_explained latent_dim_des\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.DimsExplainedVariance()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ - "kpms_pca.DimsExplainedVariance.populate()" + "kpms_pca.DimsExplainedVariance.populate(key)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

variance_percentage

\n", + " Percentage of variance explained by the selected components.\n", + "
\n", + "

dims_explained_variance

\n", + " Number of components required to explain the specified variance.\n", + "
\n", + "

latent_dim_desc

\n", + " Description of the latent dimensions that explain the specified variance.\n", + "
subject12021-06-02 14:04:221190.04>=90.0% of variance explained by 4 components.
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id variance_perce dims_explained latent_dim_des\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 90.0 4 >=90.0% of var\n", + " (Total: 1)" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_pca.DimsExplainedVariance()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAD2CAYAAAAgel/tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACgEklEQVR4nOzdd3gc1dXA4d82rXpvli3ZknvvveEuN1yxsekQCB8kECAJEEIAU0IgECAJEJoJodm49957771Jtnrv2jbz/bGy6sqWbe1Kts7Lo2d3Z2Znz+A9e+fM3LmjUVVVRQghhBBCCCGEEE6hresAhBBCCCGEEEKIO5kU3kIIIYQQQgghhBNJ4S2EEEIIIYQQQjiRFN5CCCGEEEIIIYQTSeEthBBCCCGEEEI4kRTeQgghhBBCCCGEE0nhLYQQQgghhBBCOJEU3kIIIYQQQgghhBNJ4S2EEEIIIYQQQjiRFN5CCCGEEEIIIYQTSeHtJA8//DAajQaNRoObmxstWrRg1qxZWK3W0mVUVeWLL76gd+/eeHt74+/vT48ePfjoo48oLCysdt3PPPMM3bt3x2g00qVLFxdsjRC3zlk5cfjwYWbMmEFkZCQeHh60bduWjz/+2FWbJcRNc1ZOZGRkEBsbS0REBEajkcjISH7zm9+Qm5vrqk0T4qY4c9/pqoyMDJo0aYJGoyE7O9uJWyPErXNmTlxdb/m/n3/+2RWb1WDp6zqAO1lsbCyzZ8/GZDKxYsUKnn76aQwGAy+//DIADzzwAAsWLODPf/4z//rXvwgJCeHw4cN89NFHNGvWjIkTJ1a77kcffZTdu3dz5MgRF22NELfOGTmxf/9+QkND+f7774mMjGTHjh088cQT6HQ6fvOb37h4C4W4Mc7ICa1Wy4QJE3jrrbcICQnh3LlzPP3002RmZvLjjz+6eAuFuDHO3HcCeOyxx+jUqRMJCQku2Bohbp0zc2L27NnExsaWvvb393fy1jRwqnCKhx56SJ0wYUKFaSNGjFD79OmjqqqqzpkzRwXURYsWVXmvoihqdnb2dT/jtddeUzt37lwb4QrhdK7IiaueeuopdciQIbcUrxDO5sqc+Pjjj9UmTZrcUrxCOJuzc+LTTz9VBw8erK5fv14F1KysrNoKXQincGZOAOrChQtrM1xxHdLV3IU8PDwwm80A/PDDD7Ru3ZoJEyZUWU6j0eDn5+fq8IRwOWflRE5ODoGBgbUWpxCu4oycSExMZMGCBQwePLhWYxXCFWorJ06cOMGsWbP47rvv0Gpl91fcvmqznXj66acJDg6mV69efPPNN6iq6pSYhZ388riAqqqsW7eO1atXM3ToUADOnj1L69at6zgyIeqGM3Nix44dzJkzhyeeeOKW1yWEqzgjJ2bMmIGnpyeNGzfG19eXr776qrbCFcLpajMnTCYTM2bM4P333ycqKqq2QxXCJWq7nZg1axZz585l7dq1TJkyhaeeeop//vOftRmyqESu8XaiZcuW4e3tjcViQVEUZs6cyeuvvw4gR5REg+TsnDh27BgTJkzgtddeY+TIkbe8PiGczZk58Y9//IPXXnuNM2fO8PLLL/P888/z6aef1kLUQjiPM3Li5Zdfpm3bttx///21GKkQruGsduLVV18tfd61a1cKCgp4//33eeaZZ241ZFENKbydaMiQIXz22We4ubkRERGBXl/2v7tVq1acOnWqDqMTwvWcmRMnTpxg2LBhPPHEE/z5z3+ujXCFcDpn5kR4eDjh4eG0adOGwMBABg4cyKuvvkqjRo1qI3QhnMIZObFhwwaOHj3KvHnzgLJiJTg4mFdeeYU33nijdoIXwglcVU/07t2bN998E5PJhNForJV1ioqkq7kTeXl50aJFC6KioiokCcDMmTM5c+YMixcvrvI+VVXJyclxVZhCuIyzcuL48eMMGTKEhx56iLfffrvW4xbCWVzVTiiKAti73ApRnzkjJ+bPn8/hw4c5dOgQhw4dKr3sYuvWrTz99NO1vxFC1CJXtROHDh0iICBAim4nksK7jkybNo3p06czY8YM3nnnHfbt20dcXBzLli1j+PDhbNy4sdr3njt3jkOHDpGcnExRUVFpQ3J1oAUhbkc3mxPHjh1jyJAhjBw5kueff57k5GSSk5NJS0tz8RYIUbtuNidWrFjB7NmzOXbsGJcuXWL58uU8+eST9O/fn2bNmrl2I4SoRTebE82bN6dDhw6lf9HR0QC0bduW0NBQV26CELXqZnNi6dKlfPXVVxw7doxz587x2Wef8c477/Db3/7WxVvQsEhX8zqi0Wj48ccf+eKLL/jmm294++230ev1tGzZkgcffJBRo0ZV+95f/epXbN68ufR1165dAbh48aLsVInb1s3mxLx580hLS+P777/n+++/L53etGlT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Plotting before the user's choice of the latent dimensions to use in the next step\n", "from keypoint_moseq import load_pca, plot_scree, plot_pcs\n", @@ -433,13 +2958,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 2. KPMS Model prefitting and full fitting\n" + "### Fit the AR-HMM and the full model\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "KPMS Model prefitting and full fitting involves:\n", + "\n", "1. **Initialization**: Auto-regressive (AR) parameters and syllable sequences are randomly initialized using pose trajectories from PCA\n", "2. **Fitting an AR-HMM**: AR parameters, transition probabilities and syllable sequences are iteratively updated through Gibbs sampling\n", "3. **Fitting the full model**: all params, including both AR-HMM as well as centroid, heading, noise-estimates and continuous latent states (i.e. pose trajectories) are iteratively updated through Gibss sampling. Step useful for noisy data.\n", @@ -448,16 +2975,89 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFitting->kpms_model.GenerateResults\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "kpms_model.FullFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.FullFittingTask->kpms_model.FullFitting\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "kpms_model.PreFittingTask\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "kpms_model.PreFittingTask->kpms_model.PreFitting\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "(\n", - " dj.Diagram(subject.Subject)\n", - " + dj.Diagram(session.Session)\n", - " + dj.Diagram(kpms_pca)\n", - " + dj.Diagram(kpms_model)\n", - ")" + "dj.Diagram(kpms_model)" ] }, { @@ -471,11 +3071,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kappa range = [4.e+02 2.e+04 1.e+06] ms\n" + ] + } + ], "source": [ - "fps = kpms_pca.RecordingInfo.fetch1(\"fps_average\")\n", + "fps = (kpms_pca.RecordingInfo & key).fetch1(\"fps_average\")\n", "kappa_min = (12 / fps) * 1000 #ms\n", "kappa_max = 1e6 #ms \n", "kappa_range = np.logspace(np.log10(kappa_min), np.log10(kappa_max), num=3)\n", @@ -498,96 +3106,717 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[{'subject': 'subject1',\n", + " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", + " 'kpset_id': 1,\n", + " 'bodyparts_id': 1,\n", + " 'pre_latent_dim': 4,\n", + " 'pre_kappa': 400,\n", + " 'pre_num_iterations': 2,\n", + " 'pre_fitting_desc': 'Prefitting 1',\n", + " 'model_initialization': 'Yes'},\n", + " {'subject': 'subject1',\n", + " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", + " 'kpset_id': 1,\n", + " 'bodyparts_id': 1,\n", + " 'pre_latent_dim': 4,\n", + " 'pre_kappa': 20000,\n", + " 'pre_num_iterations': 2,\n", + " 'pre_fitting_desc': 'Prefitting 2',\n", + " 'model_initialization': 'Yes'},\n", + " {'subject': 'subject1',\n", + " 'session_datetime': datetime.datetime(2021, 6, 2, 14, 4, 22),\n", + " 'kpset_id': 1,\n", + " 'bodyparts_id': 1,\n", + " 'pre_latent_dim': 4,\n", + " 'pre_kappa': 1000000,\n", + " 'pre_num_iterations': 2,\n", + " 'pre_fitting_desc': 'Prefitting 3',\n", + " 'model_initialization': 'Yes'}]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "prefitting_key = {\n", + "prefitting_keys = [{\n", " **key,\n", " 'pre_latent_dim': 4,\n", - " 'pre_kappa': 10000,\n", + " 'pre_kappa': int(i),\n", " 'pre_num_iterations': 2,\n", - " 'pre_fitting_desc': \"initialization of model\",\n", + " 'pre_fitting_desc': f\"Prefitting {c}\",\n", " 'model_initialization': 'Yes',\n", - "} \n", + "} for c, i in enumerate(kappa_range, start=1)]\n", "\n", - "kpms_model.PreFittingTask.insert1(prefitting_key, skip_duplicates=True)\n" + "prefitting_keys" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ - "# prefitting_keys = [{\n", - "# **key,\n", - "# 'latent_dim': 3,\n", - "# 'kappa': int(i),\n", - "# 'num_iterations': 50,\n", - "# 'pre_fitting_desc': f\"Prefitting {c}\"\n", - "# } for c, i in enumerate(kappa_range, start=1)]\n", - "\n", - "# prefitting_keys" + "kpms_model.PreFittingTask.insert(prefitting_keys, skip_duplicates=True)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pre_latent_dim

\n", + " \n", + "
\n", + "

pre_kappa

\n", + " \n", + "
\n", + "

pre_num_iterations

\n", + " \n", + "
\n", + "

pre_fitting_desc

\n", + " \n", + "
\n", + "

model_initialization

\n", + " 'Yes' initialize a new AR-HMM model and output_dir, 'No' will directly pre-fit the model\n", + "
\n", + "

model_name_initialization

\n", + " Optional. Name of the initialized model to be pre-fitted. Only needed if model_initialization = False\n", + "
subject12021-06-02 14:04:221144002Prefitting 1Yes
subject12021-06-02 14:04:22114200002Prefitting 2Yes
subject12021-06-02 14:04:2211410000002Prefitting 3Yes
\n", + " \n", + "

Total: 3

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pre_latent_di *pre_kappa *pre_num_itera pre_fitting_de model_initiali model_name_ini\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 4 400 2 Prefitting 1 Yes \n", + "subject1 2021-06-02 14: 1 1 4 20000 2 Prefitting 2 Yes \n", + "subject1 2021-06-02 14: 1 1 4 1000000 2 Prefitting 3 Yes \n", + " (Total: 3)" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# for prefitting_key in prefitting_keys:\n", - "# kpms_model.PreFittingTask.insert1(prefitting_key, skip_duplicates=True)" + "kpms_model.PreFittingTask()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pre_latent_dim

\n", + " \n", + "
\n", + "

pre_kappa

\n", + " \n", + "
\n", + "

pre_num_iterations

\n", + " \n", + "
\n", + "

model_name

\n", + " Name of the model\n", + "
\n", + "

pre_fitting_duration

\n", + " Duration of generation of the full fitting model\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pre_latent_di *pre_kappa *pre_num_itera model_name pre_fitting_du\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +-----------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "kpms_model.PreFittingTask()" + "kpms_model.PreFitting()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/milagros/miniconda/envs/kpms_test/lib/python3.9/site-packages/keypoint_moseq/fitting.py:589: UserWarning:\n", + "\n", + "'kappa' with will be cast to \n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outputs will be saved to /Users/milagros/Documents/datajoint-\n", + "elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_32_42\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|████████████████████████▋ | 2/3 [00:28<00:13, 13.85s/it]" + ] + }, + { + "data": { + "image/png": "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cWPp87hx4wAAPj4+WLdunU7zbF6xEJqWd8T5R6EIiXwPByvF41i8+4WUWEeIiIjoc8ROKSIiohzk4eEBITSN7pM5hgYy1C2ZP8vnS7kH6wgRERF9bvj4HhERERERERER5Th2ShERERERERERUY5jpxQREREREREREeU4dkoREREREREREVGOY6cUERERERERERHlOHZKERERERERERFRjmOnFBERERERERER5Th2ShERERERERERUY5jpxQREREREREREeU4dkoREREREREREVGOY6cUERERERERERHlOHZKERERERERERFRjmOnFBERERERERER5TidOqWio6OzOg4iykJso0RERJlTvXp1yGQyyGQyGBoaYvLkyfoOiYiIKNfRqVOqYMGC6NevH06ePJnV8RBRFmAbJSIi0l2LFi1w5coVNGjQAEuWLIGVlRV++OEHnDhxQt+hERER5So6dUr99ttvCA0NRZMmTVC6dGnMmjULz58/z+rYiEhHbKNERES6O3jwIOzs7PDvv/9ixIgRCAkJAQAMGDBAz5ERERHlLjp1SrVv3x5//fUXnj17hiFDhuD333+Hk5MTWrdujR07diAhISGr4ySiDGAbJSIi0k1oaCiSkpLg4eEhpRkbG8PS0hLBwcH6C4yIiCgXytRA5/b29hg3bhyuX7+O+fPn4/Dhw+jcuTMKFy6MKVOmICYmJqviJCIdsI0SERFlzIULFwAApUqVUkm3tLREfHy8Wv7Xr18jMDBQ+rt7926OxElERJQb5MvMl1+9eoX169dj3bp1ePLkCTp37oz+/fvjv//+w+zZs3H27FkcPHgwq2IlogxiGyUiorwkNjYWQgiYm5sDAJ48eYKdO3eifPnyaNasWbYss2bNmnjy5Em2zJuIiCi306lTaseOHVi7di0OHDiA8uXLY9iwYfjqq69gY2Mj5alXrx7KlSuXVXESUQawjRIRUV7Url07dOzYEUOGDEFYWBhq164NIyMjvHnzBvPnz8fQoUPTnUfNmjUBAA8ePFBJj4qKgpGRkVr+Cxcu4M2bNyr5atWqlck1ISIiyht06pTy9fVF9+7dcerUKenAnVLhwoXx/fffZyo4ItIN2ygREeVFly9fxoIFCwAA27ZtQ8GCBXHlyhVs374dU6ZM0apTys7ODgYGBjh+/LiUFhcXh6ioKLi6uqrlt7e3h729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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████| 3/3 [00:40<00:00, 13.56s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outputs will be saved to /Users/milagros/Documents/datajoint-\n", + "elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_31\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|████████████████████████▋ | 2/3 [00:09<00:04, 4.53s/it]" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAD6CAYAAABwKvR6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACD90lEQVR4nO3dd1gURx8H8O+BdDiKgoAFULFgF3tDBcUaNXaNInZjL8mriYqosURjTzQmEY3R2HtiFzX23jt2RVERpCkC8/6Bt3LcAcdxcCDfz/Pw6M3Ozv52dmdvd253ViaEECAiIiIiIiIiIspBBvoOgIiIiIiIiIiI8h92ShERERERERERUY5jpxQREREREREREeU4dkoREREREREREVGOY6cUERERERERERHlOHZKERERERERERFRjmOnFBERERERERER5Th2ShERERERERERUY5jpxQREREREREREeU4dkoRERER0Wepd+/ecHV11XcYRERElAZ2ShEREaVw5swZDB06FOXLl4eFhQWKFy+Ozp074/bt22rz37hxA82bN4elpSXs7OzQs2dPvHz5UinPzZs38e2336JKlSqwsrKCk5MTWrVqhbNnz2YYT9OmTSGTyTB06FCt1keT+J49e4avvvoKZcqUgZWVFWxsbFCzZk2sXLkSQohML/OHH37AF198gcKFC0Mmk2Hy5Mlq823ZsgW+vr5wdnaGiYkJihYtio4dO+Lq1asaL2vJkiXo1KkTihcvDplMht69e6vN16hRI8hkMrV/RkZGmVq/zMQ9atQoVKtWDXZ2djA3N0e5cuUwefJkREdHZ2qZmSkrOjoaAQEBaN68Oezs7CCTybBixYpMLy+1Ro0aoUKFCkpp06dPx9atW7NcdlY8e/YMkydPxsWLF/UaR0qPHz9GYGAgatasCVtbWxQqVAiNGjXC/v379R0aERFRrlJA3wEQERHlJrNmzcKxY8fQqVMnVKpUCc+fP8fixYtRrVo1nDx5Uumi/MmTJ2jYsCGsra0xffp0REdHY86cObhy5QpOnz4NY2NjAMDvv/+OP/74Ax06dMDXX3+NyMhI/Prrr6hduzZ2794NHx8ftbFs3rwZJ06c0HpdNI3v1atXePLkCTp27IjixYvjw4cP2LdvH3r37o1bt25h+vTpmVruhAkT4OjoiKpVq2LPnj1p5rty5QpsbW0xYsQI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2+JTnKZyY8ji5FJ7kBlaJa93Admn+Y0+bRu5BVK01+R0s48rUkCxjY3lylvbPMW2/bjryk0/tn1DOWAJGMvNANnHdiUD5Ird7WNB4mMRlnIDWMAQybViKR2bLVMNm50IfGxrSN7XjT6uu+zjPmOUXP/Sd4SBHDD5dNwBkKLBSyuSvJ7yAh+3nTnkJoCh3ALSwU3RTgzkydvt47HDUm4gHackKr0ypsnH8hTbzwwADOXJ9WP4sd5N5ZC2qdzq4xKTyzaWDsKWn+pIsR/j3ce5LAELudKxDB8jl1sk7ydy44/H2o955BqdSphDJrf6WBcZn3/kn4EFiIiIiIiIiIgo12CnFBERERERERER5Ti9PL6nUCFgDwxMzPFgZit9hkGUb7mO+0fpM9siEVHekpgkcPp+OMKi3sHByhQ13exgaJC/HtMjIiKivEuvnVJEREREpJ3dV0MRuOM6QiPfSWlO1qYIaOOB5hWc9BgZERERkWbYKUWUzyjuUCQiorxr99VQDP7rPESq9OeR7zD4r/NY8lU1dkwRERFRrscxpYiIiIjykMQkgcAd11U6pABIaYE7riMxSV0OIiIiotyDd0oRkYRjTBER5X6n74crPbKXmgAQGvkOp++Ho07JgjkXGBEREVEm8U4pIiIiojwkLCrtDilt8hERERHpCzuliIiIiPIQBytTneYjIiIi0hd2ShERERHlITXd7OBkbQpZGtNlSH4LX003u5wMi4iIiCjTOKYUEaWJY0wREeU+hgYyBLTxwOC/zkMGKA14ruioCmjjAUODtLqtiIiIiHIH3ilFRERElMc0r+CEJV9Vg6O18iN6jtamWPJVNTSv4KSnyIiIiIg0lyvulFLcjcG7MIiIiIg007yCE5p6OOL0/XCERb2Dg1XyI3u8Q4qIiIjyilzRKUVEREREmWdoIEOdkgX1HQYRERGRVvj4HhERERERERER5Th2ShERERERERERUY5jpxQREREREREREeU4dkoREREREREREVGOY6cUERERERERERHlOHZKERERERERERFRjmOnFBERERERERER5bgC+g6AiPIO13H/KH1+MLOVniIhIiIiIiKivE6rO6ViYmJ0HQcRaYBtj4iI8pNq1apBJpNBJpPB0NAQEydO1HdIREREpENadUoVLlwYffr0wdGjR3UdDxGlg22PiIjyixYtWuDChQuo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████| 3/3 [00:13<00:00, 4.48s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outputs will be saved to /Users/milagros/Documents/datajoint-\n", + "elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|████████████████████████▋ | 2/3 [00:07<00:03, 3.73s/it]" + ] + }, + { + "data": { + "image/png": "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+86dO6JXr16iWLFiwszMTJiamoqyZcuKgIAAERUVlaF5nj17VrRq1UoUKlRIGBsbC0tLS1G3bl2xceNGjfXDw8NF3759Rf78+YW5ubnw8vISZ86cUaunWn/pbYNCaN4O//zzT+Hh4SHy5cunts4vXLgg2rdvL/Lnzy9MTEyEi4uL6Ny5szhw4IBUJyAgQAAQL168UJvf48ePRbt27YSNjY2wtrYWnTp1Ek+fPhUAREBAgKzu1KlTRaFChYSBgYFseVxcXISfn5+s7t27d0XHjh2FjY2NMDU1FdWrVxc7d+6U1QkODhYAxKZNm2TlISEhGretlDK6HyEiIsqrFEJoOVIjERERERERERGRjnBMKSIiIiIiIiIiynYcU4qIiCiXefHihdqg18kZGxvDzs5Op/PU5slydnZ2MDY21ul8s1N4eDhiY2NTnW5oaCh7yp0uJCQkpDvwt6WlJSwtLXU6XyIiIqKcgLfvERER5TKurq548OBBqtO9vLxw6NAhnc5z1apVssHRNQkODkaDBg10Ot/s1KBBAxw+fDjV6S4uLrh//75O53n//n24ubmlWScgIACTJ0/W6XyJiIiIcgImpYiIiHKZY8eO4d27d6lOt7W1lZ5IpiuhoaG4evVqmnU8PT1ha2ur0/lmp3PnzuH169epTjczM0OdOnV0Os/379/j6NGjadYpVqwYihUrptP5EhEREeUETEoREREREREREVG240DnRERERERERESU7ZiUIiIiIiIiIiKibMekFBERERERERERZTsmpYiIiIiIiIiIKNsxKUVERERERERERNmOSSkiIiIiIiIiIsp2TEoREREREREREVG2Y1KKiIiIiIiIiIiyHZNSRERERERERESU7ZiUIiIiIiIiIiKibMekFBERERERERERZTsmpYiIiIiIiIiIKNsxKUVERERERERERNmOSSkiIiIiIiIiIsp2TEoREREREREREVG2Y1KKiIiIiIiIiIiyHZNSRERERERERESU7ZiUIiIiIiIiIiKibMekFBERERERERERZTsmpYiIiIiIiIiIKNsxKUVERERERERERNmOSSkiIiIiIiIiIsp2TEoREREREREREVG2Y1LqMzJ58mQoFApZmaurK3r37v3J533//n0oFAqsWrVKKuvduzcsLS0/+bxVFAoFJk+enG3zo09L0/asT5q28eyMsUGD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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████| 3/3 [00:11<00:00, 3.87s/it]\n" + ] + } + ], "source": [ - "kpms_model.PreFitting.populate()" + "kpms_model.PreFitting.populate(key)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

pre_latent_dim

\n", + " \n", + "
\n", + "

pre_kappa

\n", + " \n", + "
\n", + "

pre_num_iterations

\n", + " \n", + "
\n", + "

model_name

\n", + " Name of the model\n", + "
\n", + "

pre_fitting_duration

\n", + " Duration of generation of the full fitting model\n", + "
subject12021-06-02 14:04:2211440022024_03_13-17_32_420:00:40
subject12021-06-02 14:04:221142000022024_03_13-17_33_310:00:13
subject12021-06-02 14:04:22114100000022024_03_13-17_33_500:00:11
\n", + " \n", + "

Total: 3

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *pre_latent_di *pre_kappa *pre_num_itera model_name pre_fitting_du\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +-----------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 4 400 2 2024_03_13-17_ 0:00:40 \n", + "subject1 2021-06-02 14: 1 1 4 20000 2 2024_03_13-17_ 0:00:13 \n", + "subject1 2021-06-02 14: 1 1 4 1000000 2 2024_03_13-17_ 0:00:11 \n", + " (Total: 3)" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_model.PreFitting()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

full_latent_dim

\n", + " \n", + "
\n", + "

full_kappa

\n", + " \n", + "
\n", + "

full_num_iterations

\n", + " \n", + "
\n", + "

full_fitting_desc

\n", + " \n", + "
\n", + "

task_mode

\n", + " 'trigger' train a new full model, 'load' use an existing model and apply it to a different keypoint formatted data and pca\n", + "
\n", + "

sort_syllables

\n", + " Whether to sort syllables by frequency (reindexing)\n", + "
\n", + "

results_as_csv

\n", + " Whether to save results as csv (Optional)\n", + "
\n", + "

visualizations

\n", + " Whether to save visualizations (Optional)\n", + "
\n", + " \n", + "

Total: 0

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *full_latent_d *full_kappa *full_num_iter full_fitting_d task_mode sort_syllables results_as_csv visualizations\n", + "+---------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+ +-----------+ +------------+ +------------+ +------------+\n", + "\n", + " (Total: 0)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_model.FullFittingTask()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "fullfitting_key = ({**key,\n", " 'full_latent_dim': 4,\n", - " 'full_kappa': 10000,\n", - " 'full_num_iterations':2,\n", - " 'full_fitting_desc':\"Testing full fitting model and generate results\",\n", + " 'full_kappa': 1000000,\n", + " 'full_num_iterations':6,\n", + " 'full_fitting_desc':\"Full fitting model and generate results and visualizations\",\n", " 'task_mode':'trigger',\n", " 'sort_syllables':True,\n", " 'results_as_csv':True,\n", @@ -598,27 +3827,293 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

full_latent_dim

\n", + " \n", + "
\n", + "

full_kappa

\n", + " \n", + "
\n", + "

full_num_iterations

\n", + " \n", + "
\n", + "

full_fitting_desc

\n", + " \n", + "
\n", + "

task_mode

\n", + " 'trigger' train a new full model, 'load' use an existing model and apply it to a different keypoint formatted data and pca\n", + "
\n", + "

sort_syllables

\n", + " Whether to sort syllables by frequency (reindexing)\n", + "
\n", + "

results_as_csv

\n", + " Whether to save results as csv (Optional)\n", + "
\n", + "

visualizations

\n", + " Whether to save visualizations (Optional)\n", + "
subject12021-06-02 14:04:2211410000006Full fitting model and generate results and visualizationstrigger111
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *full_latent_d *full_kappa *full_num_iter full_fitting_d task_mode sort_syllables results_as_csv visualizations\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+ +-----------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 4 1000000 6 Full fitting m trigger 1 1 1 \n", + " (Total: 1)" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_model.FullFittingTask()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outputs will be saved to /Users/milagros/Documents/datajoint-\n", + "elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 80%|█████████████████████████████▌ | 4/5 [01:21<00:18, 18.81s/it]" + ] + }, + { + "data": { + "image/png": "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d3d3AMC3336LHj16wMDAAD4+PlKyKqWJEyfi999/R6tWrTBq1CjY2NhI879jxw6tda5fvXp19O/fH2vWrEFCQgIaN26M48ePY9u2bZg0aVKOP0JJRESUbwgiIiKSNG7cWABI8y+1mzdvihYtWghTU1NhZWUlevfuLUJDQ5Xq+Pr6pjvOx48fpxsTADF8+PAszY8m8R06dEi0bdtWFC1aVBgYGAgLCwtRv359sXbtWpGUlJTpaaa3DAMDA6V6/v7+ombNmsLa2loUKlRIFC1aVPTo0UNcv35d42mlt2zXrl2rVDcxMVEUK1ZM1KhRI9PzlJKmcT98+FD07dtXlCpVSpiYmAhjY2NRsWJF4e/vL2JiYjI1zUuXLgkfHx9RrFgxYWhoKMzNzUWDBg3E1q1b1dYPDw8XAwYMEIULFxampqaicePG4uLFiyr1FMsvo21QCPXb4Z9//inc3NxEoUKFVJb5lStXRKdOnUThwoWFkZGRcHJyEt26dRNHjx6V6vj7+wsA4s2bNyrTe/HihejYsaOwsrISlpaWomvXruLVq1cCgPD391eqO2PGDFGsWDGhp6enND9OTk7C19dXqW5wcLDo0qWLsLKyEsbGxqJ27dpi7969SnUCAwMFALFt2zal8sePH6vdttSJj48X06ZNE05OTsLAwECULl1aLFq0KMPvERERFSQyITLoqZGIiIiIiIiIiEjL2KcUERERERERERHlOvYpRURElM+8efNGpdPrlAwNDWFjY6PVaWryZjkbGxsYGhpqdbq5KTw8HPHx8WkO19fX1/pb0xITEzPs+Nvc3Bzm5uZanS4RERFRXsDH94iIiPIZZ2dnPH36NM3hik6VtWndunVKnaOrExgYmK/fKtakSROcOHEizeFOTk548uSJVqf55MkTuLi4pFvH398f06ZN0+p0iYiIiPICJqWIiIjymdOnT+P9+/dpDre2tpbeSKYtISEhuHXrVrp13N3dYW1trdXp5qbLly/jn3/+SXO4iYkJ6tevr9VpfvjwAadOnUq3TqlSpVCqVCmtTpeIiIgoL2BSioiIiIiIiIiIch07OiciIiIiIiIiolzHpBQREREREREREeU6JqWIiIiIiIiIiCjXMSlFRERERERERES5jkkpIiIiIiIiIiLKdUxKERERERERERFRrmNSioiIiIiIiIiIch2TUkRERERERERE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████| 5/5 [01:40<00:00, 20.03s/it]\n" + ] + } + ], "source": [ "kpms_model.FullFitting.populate()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

subject

\n", + " \n", + "
\n", + "

session_datetime

\n", + " \n", + "
\n", + "

kpset_id

\n", + " \n", + "
\n", + "

bodyparts_id

\n", + " \n", + "
\n", + "

full_latent_dim

\n", + " \n", + "
\n", + "

full_kappa

\n", + " \n", + "
\n", + "

full_num_iterations

\n", + " \n", + "
\n", + "

full_fitting_duration

\n", + " Duration of generation of the full fitting model\n", + "
subject12021-06-02 14:04:22114100000060:01:40
\n", + " \n", + "

Total: 1

\n", + " " + ], + "text/plain": [ + "*subject *session_datet *kpset_id *bodyparts_id *full_latent_d *full_kappa *full_num_iter full_fitting_d\n", + "+----------+ +------------+ +----------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", + "subject1 2021-06-02 14: 1 1 4 1000000 6 0:01:40 \n", + " (Total: 1)" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "kpms_model.FullFitting()" ] @@ -627,14 +4122,93 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3. Generate results\n" + "### Generate and store the model results and visualizations\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Reindexing: 100%|█████████████| 3/3 [00:00<00:00, 9.18model snapshot/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved results to /Users/milagros/Documents/datajoint-elements/element-\n", + "moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50/results.h5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving to csv: 100%|████████████████████| 10/10 [00:01<00:00, 6.60it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving trajectory plots to /Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50/trajectory_plots\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating trajectory plots: 100%|██████| 29/29 [00:06<00:00, 4.34it/s]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABUYAAA4aCAYAAAArCv0XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5xcdb3/8ddp03a21/ReCYQACb2KgopYEMWKYrk27GJBLNfy02vB3hUbgojA5SoWpCktECAhCWmkZ3udnT6n/f6YJX2TACFl9/18sCS7c+bMdza733PO+3y+368RhiEiIiIiIiIiIiIio4l5uBsgIiIiIiIiIiIicqgpGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYd+1lsG75grRARERERERERERE5OIwD2UgVoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYdBaMiIiIiIiIiIiIy6igYFRERERERERERkVFHwaiIiIiIiIiIiIiMOgpGRUREREREREREZNRRMCoiIiIiIiIiIiKjjoJRERERERERERERGXUUjIqIiIiIiIiIiMioo2BURERERERERERERh0FoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYdBaMiIiIiIiIiIiIy6igYFRERERERERERkVFHwaiIiIiIiIiIiIiMOgpGRUREREREREREZNRRMCoiIiIiIiIiIiKjjoJRGdXOOeccPvzhD2//fPLkyXznO9854Of/+te/pqamZp/bfOELX+D4449/Tu0TEXk+1MeJyEimPk5ERjL1cSKHhoJROap1d3fz3ve+l4kTJxKNRmlpaeGCCy7ggQceONxNe176+vp405veRFVVFTU1NbzjHe8gk8kc7maJyCE2Uvu4r3zlK5x22mkkEon9nrCLyMg1Evu4TZs28Y53vIMpU6YQj8eZNm0an//85ymVSoe7aSJyiI3EPg7g4osvZuLEicRiMcaMGcNb3vIW2traDnezRJ4z+3A3QOT5uOSSSyiVSvzmN79h6tSpdHZ2ctddd9Hb23u4m/a8vOlNb6K9vZ0777wT13V5+9vfzrvf/W7+8Ic/HO6micghNFL7uFKpxKWXXsqpp57KL3/5y8PdHBE5TEZiH7d69WqCIOCnP/0p06dPZ8WKFbzrXe8im83yzW9+83A3T0QOoZHYxwGce+65fOYzn2HMmDG0trby8Y9/nNe+9rU8+OCDh7tpIs+JKkblqDUwMMB//vMfvv71r3PuuecyadIkFi1axKc//WkuvvhirrjiCi666KJdnuO6Lk1NTQd8If7tb3+bY489loqKCiZMmMD73ve+vVZu3nbbbcyYMYNYLMYFF1zA1q1b97nfX/ziF8yZM4dYLMbs2bP50Y9+tP2xVatW8fe//51f/OIXnHzyyZxxxhl8//vf58Ybb9SdOJFRZKT2cQBf/OIX+chHPsKxxx57QO0UkZFnpPZxF154Iddddx0veclLmDp1KhdffDEf//jHueWWWw6ozSIyMozUPg7gIx/5CKeccgqTJk3itNNO41Of+hQPP/wwruseULtFjjQKRuWolUwmSSaT3HbbbRSLxT0ef+c738nf//532tvbt3/tL3/5C7lcjte//vUH9BqmafK9732PlStX8pvf/Ia7776bq666apdtcrkcX/nKV/jtb3/LAw88wMDAAJdddtmw+7z++uv53Oc+x1e+8hVWrVrFV7/6Va655hp+85vfAPDQQw9RU1PDSSedtP05559/PqZpsnjx4gNqt4gc/UZqHyciAqOrj0ulUtTV1R1Qm0VkZBgtfVxfXx/XX389p512Go7jHFC7RY44YRge6IfIEefmm28Oa2trw1gsFp522mnhpz/96XDZsmXbH587d2749a9/ffvnr3jFK8K3ve1t2z8/++yzww996EPbP580aVJ47bXXDvt6f/rTn8L6+vrtn1933XUhED788MPbv7Zq1aoQCBcvXhyGYRh+/vOfD+fPn7/98WnTpoV/+MMfdtnvl770pfDUU08NwzAMv/KVr4QzZ87c47UbGxvDH/3oR8O2TURGnpHYx+3suuuuC6urq4dtj4iMbCO9jwvDMFy3bl1YVVUV/uxnPxu2XSIyMo3kPu6qq64KE4lECISnnHJK2NPTs+9vhsjhcUB5pypG5ah2ySWX0NbWxu23386FF17IvffeywknnMCvf/1roHwn7rrrrgOgs7OTv/3tb1xxxRUHvP9//etfvOhFL2LcuHFUVlbylre8hd7eXnK53PZtbNtm4cKF2z+fPXs2NTU1rFq1ao/9ZbNZ1q9fzzve8Y7tdxGTySRf/vKXWb9+/XP8LojISKU+TkRGspHex7W2tnLhhRdy6aWX8q53veuA2y0iI8NI7uM+8YlP8MQTT/DPf/4Ty7J461vfShiGz+bbI3LEUDAqR71YLMaLX/xirrnmGh588EHe9ra38fnPfx6At771rWzYsIGHHnqI3//+90yZMoUzzzzzgPa7adMmLrroIo477jj+/Oc/89hjj/HDH/4Q4DmvLPrMnC8///nPWbp06faPFStW8PDDDwPQ0tJCV1fXLs/zPI++vj5aWlqe0+uKyNFrpPVxIiI7G6l9XFtbG+eeey6nnXYaP/vZz57T64nI0W+k9nENDQ3MnDmTF7/4xdx4443ccccdOteTo5ZWpZcRZ+7cudx2220A1NfX86pXvYrrrruOhx56iLe//e0HvJ/HHnuMIAj41re+hWmW7yHcdNNNe2zneR5Llixh0aJFAKxZs4aBgQHmzJmzx7bNzc2MHTuWDRs28KY3vWmvr3vqqacyMDDAY489xoknngjA3XffTRAEnHzyyQfcfhEZmY72Pk5EZF9GQh/X2trKueeey4knnsh11123/fVFREZCH7e7IAgA9jqXqsjRQMGoHLV6e3u59NJLueKKKzjuuOOorKxkyZIl/M///A+vfOUrt2/3zne+k4suugjf97n88ssPeP/Tp0/HdV2+//3v84pXvIIHHniAn/zkJ3ts5zgOV155Jd/73vewbZsPfOADnHLKKdsPPrv74he/yAc/+EGqq6u58MILKRaLLFmyhP7+fj760Y8yZ84cLrzwQt71rnfxk5/8BNd1+cAHPsBll13G2LFjn/03SkSOSiO1jwPYsmULfX19bNmyBd/3Wbp06fY2JZPJZ/FdEpGj1Ujt41pbWznnnHOYNGkS3/zmN+nu7t7+XI38ERk9Rmoft3jxYh599FHOOOMMamtrWb9+Pddccw3Tpk3j1FNPffbfKJEjwYFORnpo50cV2b9CoRB+6lOfCk844YSwuro6TCQS4axZs8LPfvazYS6X275dEAThpEmTwpe97GV77GN/E1p/+9vfDseMGRPG4/HwggsuCH/729+GQNjf3x+G4Y6FQ/785z+HU6dODaPRaHj++eeHmzdv3r6P3Se0DsMwvP7668Pjjz8+jEQiYW1tbXjWWWeFt9xyy/bHe3t7wze84Q1hMpkMq6qqwre//e1hOp1+ft8wETmqjOQ+7vLLLw+BPT7uueee5/U9E5Gjx0jt455Z7GRvHyIyeozUPu7JJ58Mzz333LCuri6MRqPh5MmTw/e85z3htm3bnv83TeTgO6C80wgPfIJczaQrR6VMJsO4ceO47rrreM1rXnO4myMiclCpjxORkUx9nIiMZOrjRF5QxoFspKH0MmIFQUBPTw/f+ta3qKmp4eKLLz7cTRIROWjUx4nISKY+TkRGMvVxIkcOBaMyYm3ZsoUpU6Ywfvx4fv3rX2Pb+nEXkZFDfZyIjGTq40RkJFMfJ3Lk0FB6ERERERERERERGUkOaCi9+UK3QkRERERERERERORIo2BURERERERERERERh0FoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYdBaMiIiIiIiIiIiIy6igYFRERERERERERkVFHwaiIiIiIiIiIiIiMOgpGRUREREREREREZNRRMCoiIiIiIiIiIiKjjoJRERERERERERERGXUUjIqIiIiIiIiIiMioo2BURERERERERERERh0FoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYdBaMiIiIiIiIiIiIy6igYFRERERERERERkVFHwaiIiIiIiIiIiIiMOgpGRUREREREREREZNRRMCoiIiIiIiIiIiKjjoJRERERERERERERGXUUjIqIiIiIiIiIiMioo2BURERERERERERERh0FoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjIqKNgVEREREREREREREYdBaMiIiIiIiIiIiIy6igYFRERERERERERkVFHwaiIiIiIiIiIiIiMOgpGRUREREREREREZNRRMCoiIiIiIiIiIiKjjoJRERERERERERERGXUUjIqIiIiIiIiIiMioo2BURERERERERERERh0FoyIiIiIiIiIiIjLqKBgVERERERERERGRUUfBqIiIiIiIiIiIiIw6CkZFRERERERERERk1FEwKiIiIiIiIiIiIqOOglEREREREREREREZdRSMioiIiIiIiIiIyKijYFRERERERERERERGHQWjIiIiIiIiIiIiMuooGBUREREREREREZFRR8GoiIiIiIiIiIiIjDoKRkVERERERERERGTUUTAqIiIiIiIiIiIio46CURERERERERERERl1FIyKiIiIiIiIiIjI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dDcJwCk2Ep9xq1at6vUe7r2f9evXn+7mAcfFerobAHwQ11xzjQKBgB544AGNGTNGNTU1evXVV9XQ0HC6m3ZCfP3rX1dubq62bt16upsC4DQYyc+4H/3oR7rtttu6tl0u12lsDYDTYaQ+45544gnddttt+tnPfqZzzz1XoVBIO3bsON3NAnCKjcRn3Jlnnqmqqqqofd/97nf16quvas6cOaepVcAHQ49RDFvNzc168803deedd2rp0qUaNWqU5s2bp29961u6/PLL9YlPfEKXXnpp1DnBYFCZmZm69957B3WNX/7yl5o2bZoSExNVUFCgz372s/J4PL3KPfXUUyouLpbD4dDy5ctVXl4+YL1/+9vfNGnSJDkcDk2cOFF/+MMfepVZsWKFXnrpJd19992DaiuAkWWkP+NcLpeys7O7fhITEwfVZgAjw0h9xoVCIX3xi1/UXXfdpc985jMaP368Jk+erOuvv35QbQYwMozUZ1xcXFzU+7e0tDQ9/fTT+vjHPy6TyTSodgNDDcEohi2n0ymn06mnnnpKfr+/1/Fbb71VL7zwQtQ3Ws8995za29v1oQ99aFDXMJvN+s1vfqOdO3fqgQce0MqVK/X1r389qkx7e7t++tOf6h//+IfefvttNTc368Mf/nC/df7zn//U9773Pf30pz/Vrl279LOf/Uzf/e539cADD3SVqamp0W233aYHH3xQCQkJg2orgJFlJD/jJOkXv/iF0tLSNGvWLN11110KhUKDajOAkWGkPuM2bdqkiooKmc1mzZo1Szk5ObrooovoMQrEmJH6jHu/Z555Rg0NDfr4xz8+qDYDQ5JhGIP9AYacxx9/3HC73YbD4TDOPPNM41vf+paxdevWruOTJ0827rzzzq7tyy67zLjlllu6ts855xzji1/8Ytf2qFGjjF/96lf9Xu+xxx4z0tLSurbvu+8+Q5KxZs2arn27du0yJBlr1641DMMwvv/97xszZszoOj527FjjX//6V1S9P/7xj42FCxcahmEYkUjEuPDCC40f//jHhmEYxsGDBw1JxubNm4/+ggAYUUbiM84wDOOee+4xXnvtNWPr1q3GH//4RyMlJcW44447jv6CABhRRuIz7uGHHzYkGYWFhcbjjz9ubNiwwbjhhhuMtLQ0o6GhYXAvDIARYSQ+497voosuMi666KJ+2wScZoPKO+kximHtmmuuUWVlpZ555hldeOGFWrVqlc444wzdf//9kjq/ibvvvvskdfbCXLFihT7xiU8Muv5XXnlF5513nvLy8uRyufTRj35UDQ0Nam9v7ypjtVo1d+7cru2JEycqJSVFu3bt6lWf1+tVSUmJPvnJT3Z9i+h0OvWTn/xEJSUlkqTf/va3amtr07e+9a3jeUkAjCAj8RknSV/+8pe1ZMkSTZ8+XZ/5zGd0zz336Le//W2fPSoAjFwj8RkXiUQkSd/5znd0zTXXaPbs2brvvvtkMpn02GOPHfNrBGD4GonPuJ4OHz6sF198UZ/85CcH3WZgKCIYxbDncDh0/vnn67vf/a7eeecd3XLLLfr+978vSbr55pt14MABrV69Wg899JCKioq0aNGiQdVbWlqqSy+9VNOnT9cTTzyhjRs36ve//70kKRAIHFdb35vz5a9//au2bNnS9bNjxw6tWbNGkrRy5UqtXr1adrtdVqtV48aNkyTNmTNHH/vYx47rugCGr5H2jOvL/PnzFQqFVFpaelzXBTB8jbRnXE5OjiRp8uTJXefZ7XaNGTNGZWVlx3VdAMPXSHvG9XTfffcpLS1Nl19++XFdDxgqWJUeI87kyZP11FNPSZLS0tJ05ZVX6r777tPq1auPae6TjRs3KhKJ6J577pHZ3Pkdwr///e9e5UKhkDZs2KB58+ZJkvbs2aPm5mZNmjSpV9msrCzl5ubqwIED+shHPtLndX/zm9/oJz/5Sdd2ZWWlli9frkcffVTz588fdPsBjEzD/RnXly1btshsNiszM3PQ5wAYmYb7M2727Nmy2+3as2ePzj77bEmdC6qUlpZq1KhRg24/gJFpuD/j3mMYhu677z7dfPPNstlsg243MBQRjGLYamho0HXXXadPfOITmj59ulwulzZs2KD/+7//0xVXXNFV7tZbb9Wll16qcDh8TD0ux40bp2AwqN/+9re67LLL9Pbbb+tPf/pTr3I2m02f//zn9Zvf/EZWq1W33367FixY0PXH5/1++MMf6gtf+IKSk5N14YUXyu/3a8OGDWpqatKXv/xlFRYWRpV3Op2SpLFjxyo/P3/Q7QcwvI3UZ9zq1au1du1aLV26VC6XS6tXr9Ydd9yhm266SW63+9hfKADD0kh9xiUlJekzn/mMvv/976ugoECjRo3SXXfdJUm67rrrjvFVAjBcjdRn3HtWrlypgwcP6tZbbz2GVwUYmghGMWw5nU7Nnz9fv/rVr1RSUqJgMKiCggLddttt+va3v91VbtmyZcrJydGUKVOUm5s76PpnzJihX/7yl7rzzjv1rW99S4sXL9bPf/5z3XzzzVHlEhIS9I1vfEM33nijKioqtGjRIt1777391nvrrbcqISFBd911l772ta8pMTFR06ZN05e+9KVjfg0AjFwj9Rlnt9v1yCOP6Ac/+IH8fr+Kiop0xx13RL3ZBjDyjdRnnCTdddddslqt+uhHP6qOjg7Nnz9fK1eu5MsfIIaM5GecJN17770688wzNXHixEG3GRiqTIZhDLbsoAsCQ4nH41FeXp7uu+8+XX311ae7OQBwQvGMAzCS8YwDMJLxjANOKtNgCtFjFCNWJBJRfX297rnnHqWkpDApNIARhWccgJGMZxyAkYxnHDB0EIxixCorK1NRUZHy8/N1//33y2rlf3cAIwfPOAAjGc84ACMZzzhg6GAoPQAAAAAAAICRZFBD6c0nuxUAAAAAAAAAMNQQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGIOwSgAAAAAAACAmEMwCgAAAAAAACDmEIwCAAAAAAAAiDkEowAAAAAAAABiDsEoAAAAAAAAgJhDMAoAAAAAAAAg5hCMAgAAAAAAAIg5BKMAAAAAAAAAYg7BKAAAAAAAAICYQzAKAAAAAAAAIOYQjAIAAAAAAACIOQSjAAAAAAAAAGKO9XQ3AMCJEw6H9dILz2jj+pdktdp03gU3aO68hae7WQAAAAAAAEOOyTCMwZYddEEAp96qlSv04L1f1aVnH9TiOR0KhqRnV6Vozc5x+vYP/qWx44pPdxMBAAAAAABOBdOgChGMAsPfmndW6amHbtTP76iS6X2/+h0+6XM/Haef3PO6cnNzT08DAQAAAAAATp1BBaPMMQqMAH//87f0sy/1DkUlKd4h/eJL+/X7X3/j1DcMAAAAAABgiCIYBYa5/fv3a3x+icwD/DZnpkkt9WsVCoVOXcMAAAAAAACGMIJRYJg7ePCgJo2uP2q5TLdXLS0tp6BFAAAAAAAAQx/BKDDMOZ1O1TYe/Vf5cEWNOtrbT0GLAAAAAAAAhj6CUWCYi7NZ9OrquAHLBIOSxRzWnlXj9NrL/zxFLQMAAAAAABi6CEaBYa6ifJ/GFiVp5er+F1z7wz+lD10inbcwoOkpN+lvv75QXq/3FLYSAAAAAABgaDEZhjHYsoMuCODUeXHF08qy/FCP/KdUY/NbdNMVEcU7Oo81NEm/vE8aUyB98rro85561aX8Wf/RnHnnnfpGDzFbNm/UA3/6ocJte2UxhdUeTtacxdfro5/4ghwOx+luHgAAAAAAODb99x7rWYhgFBjempub9eCfPqLbb6zS2+vb9NhzNTKbQjIMyeGw6+Lz0rV3X7luvsKvuPeNuC+rlFbuvFkfufVvstlsp+cGTrM//L8fq3L9nfrm1V4547v3r9lj0Z/emq3f3veKXC7X6WsgAAAAAAA4VgSjQKz4f/d8Q1cvekUFOX0f/9u/DQV9lVp8Ro2mFPc+/q/nszRn+UsaP2H6yW3oEPPQ/X/Vzhdu188/FujzeHmd9Kt3Ltcv//T0KW4ZAAAAAAD4AAYVjDLHKDACfOqzP9DP/5Km9dulnt91eLzSXx6RsjNM+p+b8xSXMFEPPWNVJBJ9/o0X1yh4cKYe/cc3dQxflgxrFRUVeuy+/9W3r+s7FJWkggzJGdik6urqU9gyAAAAAABwKtBjFBghNm1cqzdf+pm8nnrZ4yKKREyyWm0qGuVQfkaD5kzt/BUOhQz988lDWjKnUaPyousIBKSHVhTrwg+/qty8gtNwF6fOH371PW1f+X/642f9A5bbsFfamfgbfezWz5+ilgEAAAAAgA9oUD1GrSe7FQBOjTNmz9ehg1cozfG6Fs0OydTjEbD/UIr+/niZbroioDibSR+7frQ2b0/VppcP6Krzu7uPxsVJn7hin9asLtIW26918RW3n4Y7OflKD5aoYuvfZIQHDkUlyRkv+TraTkGrAAAAAADAqUSPUWAE8Xq9+vc/f6JIsEZJCWHZ4qSmZpPa/YauPj+k7e/WqbiwQUX5neXbOyJ6+MkDuuLcVqWnRtfV5pEeeXW+rvvECqW43af+Zk4wwzC09u2Xtevlr+mc0ds0Jlv6zG+lP96uqBD5/e571a6xl/5Xi5ecd+oaCwAAAAAAPggWXwJiTUVFhWoP/F2zJvnU4TcUDEaUmGiRxSRtfrdNGckNCvh9KjlQrvPPCnedt2p1o8K+QzrvzN6/5i+/7ZBj1INatOTaU3krJ0wgENCKJ36n9l136pIZtUpK6D72wCtSUZa0eFrf5xqGdOPvxuhf/90v00DpKQAAAAAAGEpYfAmINXFxcfIFLZKkeLtJSc7OUFSSZk12KaRseX3xWnzmOP3nFaeaWzuPLVmYqlmzpuqvjyXI2x5d5/ln+TQh/jrd+5vL1dHRcQrv5oOpr6vTQ7+5TSvvTtZlSV/RDQujQ1FJuuEc6c8rpANVvc83DOkrf7fr45+/h1AUAAAAAPoQiUTU1NSoqooyVVdXyOfzne4mAceEHqPACGIYhp56/He6amn/q6g3tYW1bmOVlp8d0vqtLbKqWrMmd/96P/tyjbJSKjRveu9zH385RcULntWMWWefjOafELt2btGa/3xJs9xvaOaY/h9b6/ZIT29w6aKzc/X0qmpZ1a7L5wXlipc2lZj13IZ4zVn2OX39f+88ha0HAAAAgOGhsaFOTY2VSnYGlOAIK2JITS1xCilB+fljZbPZTncTEdsYSg/EovVrX1eydZXGjwr0eXzHPskfkMorqnXxIp/aPCG9uaZMlywJyHZkObbySr9eWbVPN10e0Pv/lh0ol97e9ynd+Mk/yGKxnOS7GZxIJKLXXnxUFau/qwsmlCg7te9yobC0YoNZnnCapk3I1eryCdq0u15zx3i0oLhDa3Y0q6wmoor2fF1+3ed12dUfObU3AgAAAADDQGNjnTraypSbEeyVPnUEpcO1iRo9eiLhKE4nglEgFhmGoZdfeFzpzt2aNt4n25HsMhiSNu+SvO3Sknmd+556qVnnzGmWO0l68fVaTRrdqFF5ncciEUOPPl2hWRNrNXFM9DUiEemfz+fpzEtf1thxk07dzb2P1+vVfx/5uSzlv9Mls1rkiOu7XGObtGKjTanp2Zo4Nl3bGmYrlHSmkgJrtGyqRwcqfXpjS4v8gYjys+PVGinU1DM/oemz5p7aGwIAAACAIS4SiehgyXaNyevoN3lq9Uq+8ChlZuec0rYBPRCMArHKMAyV7N+rd3e8LYvJo3Zvq6SwRucHNHdKdNn/vtahSaNrNabA0L7SDh06dFjLzuxemGnXPq+2bNuvGy4N6/227TFrb8t3dc0N3z+l83AeLi/Tq498WaP1tM6ZGuq33J7D0uq9CZoxKV/ZGU6tq56uMy78nuLjXXrlse/rwwub+zzPMKS/rcrWLbf/gm84AQDAgMLhsCKRiKxWK/OSA4gJ9XV1MgIHlOHuPyYyJB2sTNSYcf2sdAucfASjADq98+YLOmNCiRoaA4qE61WQFX185eqQXI5qzZ0Wki9gaMWrFTp3vkfJrs7jgUBE/3zykM5f2KT87Ohz/QHpwecn67KbXlHWSf42cP2a17Tjha/q7IJNKs7tv9zKrdLhZreWLcyVxWrXmsNTNGv591Q4epwk6clH/qZz8l5Tmqv/OnYdtqox6Sadtfj8E3wXAABgJGhpaVJ9XaXMpoAsZikcMsliT1RmZoEcDsfpbh4AnBTBYFClpXuVl96mBPvAZQ9W2lU0btapaRjQG8EogE51dXWqKHlWMyd0qLIuoFCgXoXvCzhfWydFAnVaOt8rs0las7lZDku1ZvYYKb9uc4uqqw/q8nMjva7x1kabvM7fa/klt53QtodCIa148o9q2/FzXTytSinOvst1+KXn1ltksmfokrOz5fWb9c6hCZq67Lsa877h/n/9zbd12+JDA17XMKSHNs3WRz/55RN1KwAAYARoa2tVdXW57FaPcjIM2czdx3whqaLGoZy88UpISDh9jQSAk6SlpUmelsNKSvDKdZTH3L4yi8aOny2z2TxwQeDkIBgF0G3NO68oL7VEBVkhVdUHFPTVq/B9HTzXb7eqpc2jM6dXK8Eh1TWG9M7aQ7p4SbBrYSaPN6yH/3NA117QJndy9PktbdJjqxbr+k88o6Tk9x08Rk2NjXr+X/8rd/P9Wj6zQ/2t81TZIL281a7RhblaPCtFzV6T3jwwVpOWflfFE7uHbQSDQe3YuErt5c9o36FG3bJs4OsTjAIAgPdrbKyTz1urQMCj0Tl9fzwKRqQDh+0aM3YqU/IAGHFqq8uV5GxXdU2LRuf07jDznkBYOlRlVVZ2sZKSPthnQ+A4EYwC6GYYhrZuWa2WxoMqzG6Tz+eTw1qvorzoX+3Nu63q6LBoTO4eZadJEUN6cVWNpo5rUkGPXqavvNEgm6lM58zr/Wh4/o0Eucc/qoVnX3rM7dyze7vefuIOzUh6TbPH9f+HdtN+aVuZUwvPKNCEwng1e6U3S0arePH/auKU7uEaLc3N2r7m33L5V2tqYUAWk/Sf1dLZU6SMpP7bsbPcqlb3LVp49tJjvgcAADDy+Hw+NTUcVDDgVWZaSA5r/2Vrmkzyh1PkcmXI7U49dY0EgJOstqZMmcl+7T7YolE5IcX3swBuWY1ks9oUMacqL6/o1DYS6EQwCqC3YDCoisOHdfDgTpnD5SrMrOgVjm7ba5XF5pYltFETizrDyb0H2nW44rDOXdAdVtY1BPT0iv36yGU+xb9vKq2qWmnFxmv1kU89JLvdroaGBh04cEDx8fGaPHly1HAKwzD0+stP6NBb39Gy4r3KS++77eGw9MImk5r9qbr47Fy5k2xqa5dW7c/XmLO+oynT53WVPbDvXZVvf1Rjk0uUnxZ9f41t0oubpBvO6fs6nYsv5eiW239OTw8AACBJqq4ql9vZrMoan4pyey9K2VMgLNXU2+VMTpLFmqqkJPcpaiUAnFy11eVKT/GpstavDl+H0lPCSnF2J1CBsFRdL8U7JEec1ORNU2Fh8WltM2IWwSiA/m3ftk7j80u1eXudMpOrNCY/+ld8+z6rklPydejAai2a7ZckdfgNvbDysJYt8Mp1ZK5PwzD09As1Ksyq1BlT3n8V6TcPJmnz1knKtVRpirtBnqBNm5rzNeWsq/SJz31DKx67R8bBX+vSWU2K72fy7hav9N8NViWlZGv5wgzZrCZ5fNKqvTkqnP9NTT/jbEmdoe+WdS8pWPm8ZhQ0K7GfdQ8ihvTvtyxKdJh1yZygzD0el8Gw9Pi6VE0/+xOaMo2JwgEAQKeK8n3KS/fpYKVPRTkDB6PBiFRVZ1dhjlPVTXZlZRfIZDIpGAyqtbVVkUhETqdT8fHxp6j1AHBitLa2yBypVZs3oLTkiFraQvJ4QpIpolBYslkNZaRKiUc+21U3WJSWPZMOJzgdCEYB9K+q8rBC3nXKSg9q5+4aJTlqNbagdzja4p8of+saLZ5dL9uReT5Xb2xWYly1pk/sLlta7tOqt/bpo1cEu+YD3bVP+uXd0v+7WEp43xCLV/aa9Y9thh74hiFTP4+r/ZXSW7vjNWV8vuZO7lxCviMgrdyVqdy5X9esuZ3D3JsaG7RjzSNKCa3TlIJQVNDZU5tP2lbuVnz+pZo25zzt3rlF699+Xu64OiXFB9XodchjZGnJ8utVVDTumF5PAAAwslUc3qe8tM5gND8rHLXo0vs1eaRQJFEZKQ61tJtlictSVdUhhQPNSnF1yGwy1NZuVyAUr4JRE+V0uk7djQDABxAKhVRXVymXo0MdvoAyUqKPVzf4lJ0a/eVRTUuasnLoNYpTjmAUQP8ikYjWr31Jc6a0qrE5KE9bvUKBOhW/Lxzdsd+qwtFztGXLBs0ct19JR3qK1jYEtWZ9mS4+JyjrkTm2wmFDDz91WPOn1al4lHTbF6TfLZPs/Xw5+OhmyVkoXTI/ev/r26XSxhSdNz9P+ZmdXzX6AtJru9OVMfOrmr2gc+Wk/Xu2q2rnoypOLVXOACPUyupMKvUUq2Dmh1VUNKHX8ebmZnm9XiUlJcnl4oMJAADoraqiTOkpLerwheVt9yknre9yhqT95VJeTooS4izydEgHyhpUlNsm1/s6iAYj0t5DDo0aPVNO3oMAGCaCwaAa6qsV8LUpNSUsZ4+ResGIoda2dqX1WM/BH5J84bFKdmec+sYilhGMAhhYfX2dyg+u1dRx7TpY5pU7qVXNTXUqLoz+dd9ZYlXBqDk6eLBUqY61KjiyCmvEkF58rVrTipuV32Nhpu27PVrxyj7Flxn6/Jn9Xz8Ulj7/X+mPX5b8Qem5dWZFbBm6+KxsJcZ3djsNhKTX3nUrZeodmnf2xQoEAtq27gWFalZoZmFbv5N9hwxpe6ld7QlnadrC65SUNMBKSwAAAEfR0d6utpZSZaSEVV7tkysxLLczuowh6XCNlBgvhQ2TUpLdKqtok9vZpFRX/6vY7ytP0eQpc0/+TQDACWIYhtrbvaqvrZLVEpA7OSKrRQoGpYbmsNJTfEroMVVak9ekhKQZstv7me8MOPEIRgEcXXNTkw7s3yaLuU1GsEKjcvyqra3VhKLoX/ldB63KyZ+t1pY2Nde+pOnjQ13Hdpe0q6rysJYeWZhp7/4O/fJnpfr83A5NyRn4+p9/Spo7O075uTlaMjtV5iPj4IMhadW7yUqc+HktXHKl6uvrtGvtw0ozNmlKQajf+lo7pG2H0+UcfYWmzlosq3WAJWMBAACOQW11hWyWZqU4I6quC8jnD8npNGS1SO0+yeeXUpPVFZhWN1pUU9eh6cX+AT+dHayKU0bObDmdzgFKAcDQFAgE1NrSrFA4qHDQJ5u1Qyb5ZbP4VFMX6AyTDCls2DRm3GzmV8apQjAKYPB8Pp8aGupkeJ5VYnxINTV1XSvSv2f3Qauy8mbLbDK0Yd3zOm++p+vYlu2N+u+9m1Tsb9CStLCeOSQtmCNNzR34up99Kk5/+NHUru1QRFr1rlP2sZ/TmUuv0b7dW1S76zFNyChXVnL/9RysMamsfZLGzL5BBYVjjvn+vV6v3t2xSb52j5JT0jVxygzFxfXTHRUAAMSsxsY6eT3NircHZDFH1NwaVihsKDnRJLPZp/Qe71eCEWnvgXZNGTPwYk1NbZJPk5WTk3eSWw8AJ5dhGGpuqlRlxUEl2DuUlyXFHVmDwuOTDlValZE1UZlZR+lBA3xwBKMAjt3mDSs0If+AgsGwKqvrNOl94eieUqsM+xlyOJL0+ssPSftfU0Jphc5JDSgzoUe5JunZZumrF/R/rUBI+sKLTv3pu+MVjkhv7EqUqfBTmrf4am1b91+ZGl7RjEKPHP3MURqMSNsOOeRzLtaMBVcf19xcwWBQq155ShFvqabmNcvpkBo9Fu2scistZ6oWnL1Mpv5WhwIAADHJMAx1dHQoHA4rFAoq5K9URrKh9kBYoaBPSUfeExmS9pR4NLFo4I9Sja1SwDxV2dkEBQCGv7LSfYq3HlJGSu9nnyFpX7lN2XmzlJQ0QM8X4IMjGAVw7Px+v97d/KBmTfCr1RtReUWtpoztDkf37K3TKw+tU0b1AS1JbYsKQ9/vU29Jv7xRctr7Pv6Xd8yqTCjS0gXZCud+UhNnLtP+TY8q07xNE/P671nR5JV2VGUpZexVmjz9TFksluO6V8Mw9NxTD2lOzn7luHsPz99ZYVejeZ4WLbnwuOoHcHyCwaA8nlY1NzcqFOyQ1WKRxRKn1PQchpkCGJJ8vg75PfuVnCi1eEKKi/Mr/sgXu++WdGhCUUgDvVvZUxanUWPmy+Fg7j0Aw1swGNT+Pes0aXR7/2Ui0v7DaZo0+YxT2DLEoEEFo0y+ByCK3W5XUtoU7SvbouJCqTA/U8+9slPNm96Ro2Sfzkn16XPxkvL7r8Mfll4pN2lCdrw++UhAv78mpPQeWYZhSP/ZZlZ5h1vh9DPknvNFNZc8JVvJK1pc0H+9+6rMqgpM0dg5N2rRWYUf+F7LD5Uq21HaZygqSVPy/Hph23Z5vYuUmJj4ga8HYGCGYaihvk4tzXUKBr3KyYgoKbHzHU0gLFVUNWq/JyKHwybJpOSUbKWnZ8pm66dbOQCcIg5HvCKRIrUHDirZaVVdc0RWV1A2s5SealV1XUh5/SzG3BGU/P6gLGbzoK8XCoVUVVmu+vrDkiElJCZr1OjxBKsATrvWlhalJHUMWMZmlkKBZhmGweg8nHb0GAXQi8/n0zuv/kYHXnlSyWXbtSS1XRlHmR/bH5ZWHjapJuzUuPwMve1N1jcuMamyMaA7ntilHFdYY11SW0DaeMisa2bnadnMdN27K1NfuTFNcf18TRMISVvLEhRKWaoZC65UQsIAXVSPQSQS0dP/vlcXTyuVfYCviGpbpP2+JTpz8fkn5LoA+ldbUyWvp16RcLtG5RmyHnmfHJFUcqhDVktYORmGHLbOfQ0tJlU3JGh00VS5XEmns+kAIElqbamXw1KlOItU3eBTdmrnCJiSMp8SHEFlp0d3X/F0SAcrpPFFUm2jS/mj5x81JGhqrNfePRtUmOVRVnpEZkktXulgRYISk4tUXDzl5N0gABxFdXWV4iI7lHqUt2Z7D5lkT8jSqKJpp6ZhiEX0GAVwbHa/u0MbHr5b9l3Paom7UefGSxpgDYD3h6EXnJksy5FV5cv3SyV10tiMOF1+rVVX3xJWVZUUHy+NvjdFN47L0L3rLLrhAlefoWh9m/RuTa7Siq/W7Cvny3wMvSj6YhiG6mprVFO2RaG2fXJa6mULhgYMRSUpI0laX1n7ga4N4OgCgYC8nkZZzX6lp3eHopJ06LBfacmhqDfYZkkZyYZSXF7tPbhd4ybMkd3ez7wdAHCKJCWnq6neL1NCo9LSHKppbFeW29DYQoeqGyx692BQFkVksVrU4QvJlSBNHNPZeyo7vU2Vh3crr2BSv/V7PB6V7F2r2ZO9Uc/J5ERp5vh2Hazcq0MH4zSqqPgU3C0A9OZwxMvTZFWq+h6V955wREpN9qqq4qBy8opOUeuA3ghGgRj3/jD0pnhJA6wk7wtJKytMqo04Vfy+MLSnSwqke9ZI37tUssaHFR8vjTmyWLwtYlWdR9pWY9eNadErv++ptKgmNE3j531EixcdZUn7AXQOya1XVdkWBVv2ymmuVX5aSJlJko6EK3vKj15PICxZrQzTBU62+roauZMiamqOdM3LJ0nBsCF/MNhvrwObWRqV067KykMqKhp/ahoLAANISctVQ51P6a52uZPj1djartQkKTvNpuw0mwIhqb7ZrmR3umzaLduR735tJinVeViN9SlKTe97EaaDJTs0ZWx0KNpTUW5Q6989oIJRYz/wl8oAcDySk5NVUR6v/Iy2fst0BCWrzSKXQ+roqFVdXZwyMgbokQOcRASjQAx6Lwx17HpG57ibBhWGvlZhUs2RMHR5P2GoJFV5pG2+dG1ttercOSb96MU6Tb8oeiaOqkabflfq0MfPzdP63dK8idKWQ04pfZlmnnuZJhzn/FhNTU2qLN0qf/NuJahG+WkBTXNK6metloxkqaJBykvrv87tZfGaNG3ucbUHwOD5A15lpUpNrdHPi9qGkLJSB57Nxxkvldc2nszmAcCgmUwmJbsL1dhcolRnUHa7Q20dPrmOTEsUZ5XSUvxqbW+WLzxGHcEDXV8Ixdskn2+n2ttdSkjo/QYm4GtS/FE6x2e4vaqvr1dmZuYJvjMAODqTyaSMjEKVVu3V6Jxgr+PBiLSvVCoe3fmZL9NtqLK+Uk2NFrlTs09xawGCUSBmHG8YWhvpPUz+/crapJ1+h5pSsmTKnKYCtSq9plbnTJbCFkMdzkhU+VAkQ/977Sj5QiY9uMOpzDNu0/xrZh/zxNutLS06XLpNvsbdileV8tx+TUmQNMhpSMdmSy9vMen6RYYsfVy6IyCVNadrduHoY2oXgGNnkjpXbI6YJYW79geCEbnf11s0IqmqNqDq2oDMlogUkTy+DjU2Nig1dYBvOka4YDAov98vIxKRLS6ORViA08hms8mZPEatnn1KipeaPHb5Qn45jnz6sluleLtXwZBV9S3Zyk6rlu3IexG3y1Bl3UbZcs+MWlwuFArJYgn3cbVoifEhdfi8J+O2AGBQMrNzVRUJaVdpmbLTOpTs6hw6X9/U+TM6T/K0hxRv73zGpaWE1dRWpaYmi9zuflaqA04SglFgBOsMQ++SY9ezx9YzNOxUccHAYWhJi7StPUEalSlHfopS2kOa4wgpI2F/5/GaIwXjQ0pKiu7tdebYDNksJtV5pTHTlmnilDmDup+2tjZVlO5Ue8NO2SOVyk3xaXLiwPfUk8cvHW6wqV3ZsqdMUO7YGVqc3aZn3nhCiyc0KM3VXbai0ax3DmRq+WU3slIicArY4hzyh4OKs5vV7g8r4UiPKHucWX6/lHBk1o2QIW3b6VFGWkgzJxudYaqkQDiskrK31NAwLuYWHgkGg2purpcR8ineFpLJLLX7rGpusio5JV3x8UdZPQ/ASREXF6eQY5TaAwflPrJSveXISvWS5LRLTcEWORNTVVWfqMKM7jAzNy2g8sNblD96Ttf7EKvVqnDE0telonT4LYpz8XsP4PTKyS1UekaOaqsrVFPerKCvXjmZhqaO6/xCvKrep4hsMuvIl0VxfgX8VWptMSkpOf10Nx8xhGAUGCZaWlr02AN/Ufn+3UpJz9S1H/+sCgoKepXbtXO7Nj58txy7T3wYuqdZ2mckqyM7X858p/I7vJqYEJLL7pPe1zEp3SZVtkqesE+jk3veh+RO7Ew8Vle5tfSm8/ptm9fr1eHSd9Vev0O2cKWyk9o10SWp72m3eukISOX1VnmVKWvSeGUXztSEaelRQac7NVXLLr9Nm9a/odYDpTKbwgobNmUXTNbl1y5gMRfgFElLy1ZjnVcZqTaVVYY0KteQzSxlpFpVUmaS29X5BcveA+0alRdUWnL0+XEWaVKRX3sP7VNNdaqysgf5oBjmgsGgGuqrleLwydEzB4kLKWiE1NBULSlL8fGD7EoP4IRKSHCqtTVP/nCF0lPiVNMQ6VqpXpLcTqm2qVnxiRmqafIry929WEl2WrOqK/crJ697ISWLLVm+UFtXz9O+1DYmamYRoQKA089msymvYLQkqba6VMmJ+7qWCU9Pk+oagspK6+w1mpwoVTd1KNBRpVaTRUlJ7tPTaMQcglFgiDMMQ/d8/2uqXv2kbkgv1XVJhupLpPtu/Yeas+fqp396WKUH9neFoUsGGYaurDCpNuzU+MJMXXBmUr9h6M5Gk/ZEshTMzpcr26q8UKsmucJyWFoGHLK+OFt6cIvkyumQu8fftKYmye2KU1WrSb74cUpNTe061tHRocOHdstTu13W4GFlJXk1IUnSIKea8QWl8garPOF0WV3FyiyYoeKp2Uft8elyuXTOuZcM7iIATgqHwyFZXOrwtSg3y6HSCr9SkiJKSTLJHmdTXUtAKS7J19E7FO2pqDCgbXt3x0ww2u7xyGX3ydFjwar2QERNbSHJiMhskmor2xUXn6TUtEy+7AFOg6SkVDU1dMgc36i0VIdqm9qV6e4eTZPpjqiqsUUy56u1vVRJR95f2cxSkr1UTU0pXUNLx4ydql17GjVzQrv6endzuEayWByyWvv/mGcYhurq6uT1euRwxCsrK4uFmgCcdOmZhao5fFA5qZ1fANlMUiTiV1i2rhFA6SmGGlsC8rdXqE2Si3AUp4DJMAZe0KCHQRcEcOLc+e0vadrev+ri3PZex/Y0S19fbdXfzgkp4yidgd4fhi4YlSRzH2FoxJC2N5h1yDFO3vQpSre0Ky90WOOTwrIe5T1zKCLtbZHq4+w6HHIpHLGq1v+KPv3ZbXIeWT9g82bJs+YW7Q6O04c//gXVVJWqrWabLIFyZSS2KecY/vYFQp1BaGvQLYuzWBkFM5SVnXtcb+4Nw1BbW5tCoZASExMJD4DTwDAM1dVUyh9oVbIzJL8/pFZPSMFA5xcnMtqVntKqgqze5/qChoJBQw67WTv2J2jarAsHDAZGiuqqMmU5/Xrv+59mb1gd/qDSXZLtyKcMry+sxraw2n1mJadmKT0jMyZeG2AoMQxDDXUHlO5qlz9sqN3bLnePKXyChtTU4pA/ZFNmUqXsPX5F61tMSkw9q2tajNqaKh06uFlj871KPTJdUYdfOnBYMpmkjFSTXBmXytHHNBolJbtUdmC7MlNb5EoIqN0Xp6p6l7JzJ2jSlFkD3kM4HFYgEFBcXJwslqMP6QeA96urLVdK/O6uOZVDhlRZ61BhTvc3vB0BKRRxyOe3Kd6ZK6eLcBTHbVBz4hGMAkNYQ0OD7vrwGfrFpLJ+yzyyV8qMl87tPao+agGl4oIsLRjl6jMMDUekLY0WlccXy5tSrGxLm4pUozHJR/+194WlXc1mVVpSFUmL14XLLHpxpTQ7VcpJkn6z7gl94Yt7usq/9pq0e/P3tGBavDKdnUFoP51VewlGpMP1ZjX7U2V2jlV63gxl5+Z/4Dfne3ZtV+WhXUqO9yrOElFLR5wi1lTNOONsJSUP0DUNwEkRDAblaWtRKBSU1WqV05WiUCioA/s3K81Zoewe6ytV1AS1v7RdcbawHHbJ65Na2+yau/BSZWSM/Mn7a6sOKtPV2fPCH5Lqm33KO9IR3xcyVFHrV3xcWG5n57PW65OaOhxKcecqLYMVq4FTKRgMqq2pRKmuoDy+sGT45OwxFZE/JHl9iWpt86swq0k9v+atqHMoM39B12JMgUBAhw7tl6elRsGgX3Zrq8YUSK4jX5SXVGVo7ISlUdff9e4WhbybNG1cR6+27TscJ09gsmbNPqvXsYb6eq1b+7JCgWo54kLyBywyWdJ1xtzzlJOT94FfFwCxwzAMVZe/oZzUQNe+6kazkpMSFR/XXa6xVUp0JqjVY1V8Yk7MhaPvfREldc4v3XMhPhyTQSUNdBcAhrB//vn/6Zas/kNRSbp6rPS1t7uD0a45QyNOjS/I0vIz+w5Dg2FpU6NVFQkT1O4qUEFuq+bGNSovcd9R29Xml3a2WRVMS1HezGzNGJ2k4g6pyVukV9dsVrqlXTlHVpGOs/uiz20za2JGSKPT2+Q+Si/XYESqajSpsSNFShij1LwZyl9QqKIT+Idh/ZrXlaK9WjIhoO4R9z75Qq1a/U6TZs6/SO4YXuUaOB1sNpvcqem99uXmT1Z1Wa2y04KSpN0HfOro8Oqs2RFZezzm/KF2vbNlhabMOF+ZmSNzSL1hGPK0NSsS6Z6PsKktqLQjz95g2FB5jU+j0iOK6/Fuz+6UUp0+VTSWq9FiUmrqyA+PgaHCZrPJmTJGLW37lJwgNbXZ5Q/5u3qH2q1S0OpVclKyKuo6VJDR/R4qL8On8oodKhjd2aszLi5OxcWTJU2WJJXsflmuhKau8jmpdaqvq1J6Rucz0Ofzqb5muxbN7B2KSlJxfkDrduxVS8tUJff4Uvhw+SFtWvtvLVvY3LUoniT5gw1atb5KzWMvVEtrs/buXieTIkpx52rRksuUkpJyAl4xACONyWSSNX6cgpF3uxaiy0yN6GCVRUV54a4vhFKTpOpGv9LcJrV5q+WRYiIcDQaDamqoU8Dvkd0alhRRR8AsmePkdmfI6XKxMPBJQDAKDEEej0ev/ONPWnXv3br94oHLxh3pLLni0NHDUH9I2tgYp4rE8fInZmtMbrOWJHiU6ig9apvqOqQ97Qky5WRo9PwijYlLkN3WrOTEzuPOeKmq9qCa6m1aMr5zX1tHSHZ7MKqedo9Vi/OlzfukpTOirxE2OoPQhvZkReJHKyV3hvLnFanwJH1DVllxWI7gXhUXBHodc1ilsye06K11K7X0wutOyvWHgo6ODnmam2VEIrLabHKmpCguLu7oJwKngdvt1v69LoXVKK83osamdp05M9KrnN0qLZrdptfWr9J5539oxM2d197uUchbp3hHSB3qHIJrM0nhsNG1IEttc1C57uhQtKdcd1AH6qvkdqfzBhs4heLi4hSOHy1v4IDcLqtqm8JyJ4e6hpU6HVJTW4viE9NV11KpjOTuZ1xWan1nL/Gcol71ZucvVFPLiq6F6hLsUn3NOoVTL5XFYtHePds1cXTbgG2bPK5dO9/dpPkLO3uaBoNBrXn7P7ry3OZe0ynZbdL4gjo9/tRvtHxRSDddGJLZJNU0bNOLT61XUsZZuuiSD32AVwrASJWenquqsv3KTev8DGaW5HK0qbYpWdnu7s+OaSlhtbQF5UqU2n01Iz4cDQaDqq4qV2q8V5lRtxmRLxRSdV25PG2JciWlyulKOl3NHJEIRoEhIhgM6vWnH9Phh3+pyTWbdWVSRJtsUotfcjsGPrc54tDyMyf1GYZ2hKQNjQ5VJhQrlJCm4txmXZzkU6Lt8FHbVO6RDhmZso6ep+L552uGPU6G94WuRQE27bDKHm6Rv96nuPaQMuPCSgqq64N5TVNHr2A04ItTikNqP9IJorJJqve4FLaPUnL2dOXNHqf8kzy/p2EY8nq92rn1HS2Z2DsUfY/NLKUntqq2tlqZmYNcAWqYCAaDaqypkc3vlzUYVMgwFJbU7PHIlJCg1IwM5g/DkFQ0Zrq2712rQEedpo0P91vOapJG57ToUGmJisYU91tuOPH5fOpoq5XT7lfCkakDE+IlT4dkNYUVjnQHKAF/RIkp/ddlMkkuu19tba1KSmLKEOBUik9I7FqpPsNtV029oey0HivVu6TaJo/Cypano1LOI7/vcWYp3rpfrS3JSkpOjaoz0elUbc04Jbv2dfW4ysvyq6JshwqLZqilpUbTCweeIsnpkAKB5q7tPbt3aEZxU59zzDc0h7Xy7TrdcUtI1h5vF5ISI4q37NPaN97VhnWv6YabvqJxxSPjGQzgxDCZTHIkTlAwsr2716g7rPLGeLW2B6MWoHPEBRSOmOWwS8FgrTweyekcmeFoc1O93PFeJfbxUdhhlXLcETV6vPJ5O5/lhKMnDsEocBoZhqENb72unff+TPn7XtcSV6DzzeeRZ9w16dI/d0m3DzAX/toa6cwxqVGhqCcorW+MV1ViseRI0uTcZl2ZEpTdUj1geyKGVNJqVrUtT/ETFmni3HNUcGTVpEgkotqaGu3b0KJEX63iA36Niw8rKU6STVLye/fU+WMySeUtrTLsoehr+O0KhqXWgEv7dLEKZo5XruMoye8H4Pf71dhYr/bmCgXbq2UON8thaVdKQlgOk7r+GPenIM2nQxWlIyoYDYfDevXFF1W2Z48ysrJ07vTpcplMCktqDYUU6uhQo2EoI2dkDkHG8JaekSnDmKsN657vmkuvP6Nzw1q1YZ0KCouG9WJDwWBQ3rZaOUztcvdYS8UwJCMcVjgYlDNBspo7p0mRDEWM/kPj98THhdXhaycYBU6DpKRUNTV2yOxoVFpaXyvVh1Xd6FODJ112e33X+xVXvFTbvEV2x1m9ForML5yqw6WHVJjV+aWvRVKCda/a24slmRSRdNT+80b3+8lDpTt00YJQn8VWvtOkq5dHh6JPrqhXSWmLJhW1qaOtSt7qNfre1x6RL1SgO3/1pIoJSAEc4U7LUuWhfcpL754yxGGplN+YpGC4vGsBSadDqmv2KSUlUeFwQEawVh6PSU5nyulp+EliGIZ8HR5lDJD52q2dn8mTE/4/e+8dJ8lV3us/lTrn6clpZzZrs1ZZCEmAQEJkLIJJJjgABl9fsK99f/a919fGXGyDIwZjGwzCJGMwWSCQhLK0Wq20Oc3OzE5Onbsr1/n90T1pd2Z2VlqlVT/76U9PV1dXV9dWnTrne77v+zrMlHKEI/Ww+gvFC3eUUKfOC5gTR4/wyOc/QeSx7/GKUInLVeaExYXsiMFnj8HkRmhaQgBwPPjEPj9fe3cjeRMey4UZC/aiBsLs6Czw0riFIk+vuC+2C0cLKtlwD4mtL2PjritZ7/dj2zZjw0Oc3PMLxHQ/ESdLR9DhOhUI1h5L0BWCU9OwthGmjSKetrhDLbkBDk4FuOrGX6Fn7bpVHa/VYNs2+XyOYnYUszQGTgY/ZaIBi3QEtBX2eSUkiYuq9Nw/fepTfOcv/oLtxSJrPY89ssw/hcNsefWrec9v/iZhvx9Zlsl5HvGGhnpYfZ3nJY1NLUQiMWDpXHmzSDIE/S4DJx+ie+1VL7jE9bZto5dyKCJHYsGlKAQUDRfXsYkEIFrTRiIBwXjGJBZwV1XUzvFA1updwTp1nisSyTZmpkzS0TKxWJBsqUIyMv9+Q8ImVwwwPBGhp7U0t7wp4TI0+hhtXVctiu7QNI1g/HJ064G5IibpuKBv6EFaWnsZHh+iq2X5SZOpnEQssXAiWCzblpTKJsno/Ovv/WwGv5pFWIM8sT/Dx9/j0FhL0X5yMM///R87ufW2v+Gtb//11R6eOnXqXMRIkkQothHLfXIuNVxjXDCaKzJjxWhJFubWbUzAeNagJRWgoFvI3lTNOZp4Tvb9QmHbNoZewTbzuHYZVVp6ImohIT+YpkdItamUy4QjkXN+ps65qfeG69R5lpgYH+eeL/wl3P3v3CBP8E4/c87QpThagj22n+u3JfndR/K8b73Oy9qZKxB0cAY+c8BHS1cv39F3EAr62d1d5uVxG8ituC+6A0cKfkqpjTRd9ko2b96GbduMDJ7k8D3fRcoOkRJ5WsOCLplVC4q2B1EfPDAAXSkwlRKwuAMunAB9pTRv7l27uo2egRCCYrFIbmYMvTiKMKdRKRDWTFIRQVoDVhldIbz53HzLMTzjp3ld91Pa1+cb/+N970Pcfjs/cpz5xt918XI5/vxb3+Lvxsb4+B/+IT6fD7/rMnjiBOu3bHkud7lOnWVRtSi6OUHwjHAjAQyNWhw6XsIwBbZbwO9zcVyHnnXXnOWwej4ihKBczOFZGWIBb8HyxYKoVvspuulRLFuE/C6dtejaTKk68aWtkBEjV/HT0ZR45n5InTp1VkSSJOLJTjK1SvWOFqBkGkRq17YmQzRsoCgRhqZMOhvn0xO1NVYYHzlMe9e2RdtsbGqn72iKtW2ZuWXtDRlyzgYOPhmjvSXLUs2CAPYfC3LtDTvnljU0dDI2dZzWxsUzxEKAqswvs2zBkRN5WpOj9LRNc9sti3M/r+uGr/xFhT/8zO+xdt1WLrv86vM7UHXq1LkoSaaaGBkI0Z6uzC3zy8OEUy9hOnuAdHxhihGXbMkhGVHJlgz8/qmac/SFE/Vi2za6XsIxCkheBZ/iEPKB4gdLhezKaaAX4VM9dNsgTF0YvRDUhdE6dZ5BSqUSP7/9nyh+//NcWTnJW8OsKDKOm3B3TkWJpRiMNPFrV/loDMJtV7bwnf0ZPvzQDH7Zw/Yk1rfE+KPXNPG9iQbevdEBVp5hyptwtBLBat5GxzWvYl1TM6N9h9EHn+TIwZ+QVsqsm3WlrrJ91V0YKUsUFT8zno8N23x0tPh4Vd7hW3dOQVBHlhcLo6OFBn77fe9Yle1f13UymSkquWEcfQLVyxNQDZJhl65zCMvn3LYNiQgcPS2xrXtpS6gtYLIUZ0vLCz+k/PChQ/R97Wv8h+Nw5pGXgT9yHN77wAMcP3GCK9avxwIiksT05CTppqbnYI/r1FmZjZsv5/DRUXZvnu9M2x7ccVeGlkabl13l4tdACJOh8T4eeXKUSrnMxkuuJxyJrrDl5xa9UsYqTxLyO2i1LCNCQFF3cd3FgmjJcKlUbKIhl6YzxgWNMRjLQld66e8pGRKqP/aCc9HWqXOxoWka0UQv+cIJ4uFapXplvlJ9QAVbKRMINpApTJCKVfssCtAQHWdqMkFjU+eibbZ1XcPUzI9ojFfXDfjAyu5ly/breeDxX3D5tiLBBZe+5cDeQ9WcxYEF6Y127LqKX9yxl9c0ZhdtX5LAced7E/c/WuCll5n82zdm+MKfnl0Qb5b//eE8v/d3/5vLLv/ZUzlUderUuQgJxzdi2PsI1NqkhphgZKqPeHIjFfMwoVqfx6fC2GSB/v4ykuRiOxKx2DgtbZtJJJfp7DzHzAuheSRXx686RHwgL5FFTpXBOncWJHQLImEZxwV5yWmuOk+FujBap84FxnEcfvn9bzP8tU+zefxx3hDzQALCS69fdODnGZlSIMHVPc28fUtVOR0x4Hsn4APbwafKvO3SNG+7dHGj/8WjKrftXP5GMFGBPjuB6LiM1O7LiBSnMceOoz/6dVyfyabZRnmVGkHBhlHdhx5spKSqrN/qp7cxiAyMz0CxmEFTXMYmVXq3yYxN2Nj24ha+q/cqYrHFiqZt22SzMxSzI9jlcSQni18qEw85tIZADi9//M6F7UG2BEXTh00USWvAH20jnm5jS2+MPQ//kv6pPnoaFxdhslx48ESMbbtveGpf/DzjD9/1Lv4/0zxLFF3IH1gWf/i5z3HLpz9Nn22z1ufj9MREXRit87wklUox4FvPieEjrO+oXr/3PJjjsm0GzQ3w+MEyB44UURWvmvdYUXnyCZ1EPESy8RKSqedX3mDTNNGLE4R8JvHaBNoiQTRYdY8JAfmyg2lZxEPiLEF0FlUF11PpnxS0pty5oni2gFxJoWRG6FjT9ez8uDp16qyI5vPhC6+hbNYq1Wcckgl3LqIlGgTbrmB6aSrWFKFamHxAA9M+SqkYX1SEIxgKMTWxEZejc8PmrmabgakJtl/6WvYdegTHmkGRKniOBTJs6oVouMLY6ACtbWuq2wkGae+6hocP3MNV28qL9jkU8FMo2sSiMDppko5VuHrH8gUtAQJ+8HEC0zRfEO79Fyu5XI6xsTFisRjt7e3P9e7UuchJJNOMDIRpT8+3MSF1FJ+2jnylDc03CkJw4NA0yZjJtvXeXDRMplDh2JEMHd07aG9f89z8gAXYto1eKeGYeSRPx68sL4SeiSxVc4iWTZYsvgRguoAko8mQq6jEU09xgFznLOrCaJ06FwAhBHsfuJeD//pJ2o/fzY1nFFE6E9uDu7MSo1KErZ0tvGFjZJGD0vFgwoL+vMKDYy7XLGFYfGhcIisidMQXu30GijBEM0bjViKNUYLlcSL6AG3HTxLWqBZKWqVBaEqHSSeIFW4l0LaRlrVb2JSsxqnnshl8zs/nkvi3NMB0LsWe/VNEbUhscClVHEqlxW7MsaEM/ScOYJXHEfYMGkWifotkBJr8wFPsJ3sC8hXIV1QMEQY1iRZuJZpsI9nZQNMyrqgrr7mRIweT3H30OKlwGZ/ikqv4cZQkO658CcnkC7/qoW3bVAYHueIc620EyoODTDsOzZrGpOPgq1SYHhsj2dRUr1Jf53nHpZe9hKNHotz92BGioTyOY5FOwpe/PcnWdTrvfoNAqTVSZd3ip/cNcdfdv+D1r/UxNlKktf25LwRi2zaV4jQ+qUSi1nH2BJRmBdFQNd2HKyBTdHBdi0RIEF+mk10xoWRHCSe76NkYRdd1JieGce3Z4gYyiYZmujtSyPI5y7DUqVPnWSIYDFO0OzDdYRpTASamjUWV6lMxwXjWZjqfoLUhN1eMKR6C8cxe/P5r0RbkBW/v2sJw3wDdLfOFTeKBPlRtPde85GY8z0PXdaZO386aBXlH86P3zQmjALt2X8PhQ0G+e/eDdDRlSEQNSmVwSPD1Hxt84DaHcFBhZMylNb28W3SWZMyiVCrVhdHnIUcOHOCzH/sY2pNPsiafZ1KSOBCNctW7383v/7//94IuYljn+U00tRndfmzOyZ6MwsjEcdo6tzIxmmNqcoieDoNkdPG4MhWDy7aaPH7oSYLBEKnUs2vmqAqhxZoQauBXHGJ+4DzqCldMMB0QyPj9CjMlFwlvzik7i+nARF6mtcGH6YKQ/PVaEBcQSYhVVxW5iMqP1KlzYThx9AgPf/4TRB/7Pq8IFYmco7/wSA6OOEE6W5q5viuJurCSvAuPlTSGlDjDUoCPvySMKkt89bFJxrNFXt5q0xSCyQrcNaYRDEfZ1NnEDR1woiAzTBN6sJHmkEyjXKQ97OE7jzGvI2C8LJEhghvvJNJ5CW09GwiHl5+J6j/2U3pa83Ovx6bg0P4MGxI6rS+Z5skn72B6eh833zzffHzzH97Hzl2XsvFpTECXTMiWZQwniCPHUYPNhBIdpFKNBINPocISVXE7l8vhOA6RSOQpb+f5SD6f57beXn6WyZxz3Q8DO/x+8jfeyM2/8zukEwm8cJhQKESgtZVg6BxlwOvUeQ4QQnDPPXewqfV+Ht47w65NRdYs08Z8906VrnUvZ/26teT1MC2tW56TcHLHcaiUs8hujkitX+vVHKLeAkHUdiFXspCFTTwC6jK274IBhpcgluomcBG1X3XqvNjIZkaJBGYAyOUqNCYWD8HGMxq6XqGn1Vi0fGgqSseaKxdNtGemxwmIexcNsE+NJujd9Mq51yeOPMj6ln1zrw0HZqxbaG/vXbR9IQSjo6NMTk5A6T/ZsQn6Bg3uemCGXZsMvveTw7TGD/Pb71o5FvR3/t9a/upzR55yu+u6LqVCgVIxA1SFWEULkEg2LkoDUOf8eOzBB/nX227jM6Oji7J+CeBfFIWfbNrEF+65h3T6+RmyXOeFz8jAw7Sn55Ns5koQSFyH4zicOHInuzbay362WIGBiUZ61l76jOYctW0bvVzEsaqO0IDqzhW6Ww2eAMOaF0JVVcHvU7BdcD0NSQkga2FKxQKWUSDoq6ZAM22QZZl0woflQMH0k0631tMhrY5VlCOtO0br1DlvJicmuPsLf4m466vcIE/wrnPkujxWhkfLfmINaV6+Pc2VvnnX3ZgJj5d9ZJUwW5pjXN8dRJLg9qn5ghnvurwJ3U5z36kCx3I2qYjGh2+MkbVk/msoiFlIs6VR4cYIKNLqMzabHoyWFXJKAinZTaJnG21da+hYYuZp1lVQqVQwSjmsUg5HL2GVSxwZyKIKgSIEU2WPzc0w4+hI4wbpNOj64g59dzLB+AyrEkZNFzJFibLtxyGG5E8TjLaRaG2lIxpdVZ7S1SJJ0kXhDl0Kn89HsLmZRzOZFV2jx4E1wG+YJs4dd/CTn/6U/1y/npf97//Nxs2bEZaFEY8TaWys34jrPK+QJAkJB58KxaI+J4oWii6PPlHCtD3WdAS4ZH2Q19zg8LU7DtDV1Uo6KjE99gSJxq3P6mRIqVTA06cIBzwUZWlB1HIFk0UTTXFpXCHvc7YiYctpEg2dxGrt92yROsdxCAQChOoTGnXqvGBIJFtrlepLRCMBsiX9rEr1WSnKyLRDe3o+v3xLusjo8FHaOzfPLUulW+g71sTa1sm5Ze1NOcbHBmhpXQPAmnWXM3jyAN0t1W0FVCiO3o9o61nUz5Ikifb2dtrb23n8oSPI0mHWrwnQ1d7O3Q8VKdtlHj14EiF0luue5Yvgi+x8yn0I27YZHztN1KfTEhcote8xHYPpyTLReDOx+MXZl3umEELw4F138RdvfzvfmZo6K2OhBPy66zJ+7Bj/673v5R++9716tEGdZ4RYwyVUrEfmUoUkIjAyeRTTDtDdurwoChANgVEpoTJZq1Z/YcRRy7LQywVcu4jkVQioHjEfq3aEeqKaE9RaIIT6VAVVkvHQQAni+SIEfb5FkXmRSBTbbkKvVCiX8ih+DxnIlGUCgSjpdKQ+FrvA1IXROnVWQblc5hdf/QL57/0jV5RXV0TpnryKFE1x47om3hWeFxuPlOGo4UcNRbiiPcGt4bMbNccB12MuBDSoybxyY2LROvdPyNy8KUlvanXhzSUbRnWVsi+N2ryOVO9W2tJNNJgm5XIRs5Rj8NBjuEYRzArYFRTXQhMWfskhrEJCYy50C6i2IAtakYwBiSBM2hZHjxa57DKPQmH+/VwOUtEwE2fsmy0gX4Ki4cMkDGoKf6QaBp/uStBab/ifFsFgkN033shfnTrFN1fIM/qPwB/V/laB1wrBa48f59A73sHtiQTJ3/otbn3b26BcRmtqIhJ/4VSBrHPxE4+lefyQwbaNDoYl+Od/H8NzK1y32yEYhGN9Ct/5icatL0sjeUXSMcF4tkwqEaGYexJDX0sy1fiM7qOuV7BKk4T8NlqwGh6frzh4rjMniOqWR7ZsEfS5NC2T/9kRkC8reL5mEk3zjgEhBMNDAxRy48R8BprikrM0DC9Ea8daksnUM/r76tSp8/SpVqrvmKtUbzsBKqYx5/rUZIhGDAqlFNnS5JxoqkmQigwzM52gIT2fg6m960omp35EU6LqrvSr4GT3YdvtaJqGpmlY0nbg8bnP9LQVGR0+RXvn2iX3ccPW1zEyfJT2Rg+/Bje/NEo89Sr++YsGn/jcPfzRh84uCOo48PFPwvv/2+8+5WMzPTlGOlQ5y6ElS5AKWUxnxtF8gYsq6ueZRAjBt7/wBSa+/W1+NZNZsYzLhx2H333oIfY88ABXXnfds7aPdV48RKMxRgZihNLzg8doYIpcIUXzKuphqIqHbbto2iTlkkQ4cv5VeqtCaB7XLs0JoXEfrLbGkVtzhM4KoZqqoCgKiiQjJD+SFkbyh4iuIpWI4zjkctO4jgFIBENxGtJNdUH0GaIeSl+nzjLMFVH6+mfYNLaXK2Mr500qOXBnRqYUiHNVTwvrk9VOme3B40WJMddPOpVgV0uMsLbyTOu+PJgRuKpt6fdtF/7hsJ/fvX75aukZA0ZNH0U5hh1IEAxFiWgesmOgeiY+XAKKS0iFoFLtVD5dDsxAWzNMJcZ4fN9JbrzxMI5zgM5asdT+fogMfpInMlG6O6J4SgIt1EIo0U4qla7nm3oGefyRR/jbj3yEpiee4JO2vWhWzAP+VJKwheDPVthGHviupjF8ww386p/+KcmWFsItLfjq/291ngcYhsFXvvinXLNtgP/84SCvvCbHnb8cJ5u3kCSZW25Mc+M1MT7/DQ3dXcN/+8h70RSFkSmJpsYIug5lq4Hm1rUX3A1jWRblwgQhzcCvVDvOpYqD5zlEQ9Xw+LLhUq7YRALuWXmlZrFdyFU0lGAb8dTZeX/7ThwhKo/TFFssSrgCTk34aWjdTCr9zIq/derUuTDYtk0lf5x42CNTsImELBYEHVGoQEnXSEYyiyrMZ4sS/thVhMLzNtOh04doiR+aK+YE0D+xhp71V8x91/CJL9GzwJV19HSYjdvfs2x0zuMPf51L1x1c8L1gBj/IJ//vB5kc/jkfeZfB1TvB8+Anv4T/uAM++m7Y138dH/jde8/7eFiWxcz4KVoT8/uomx4TOQvheVXB14OKpdHU3Flv61bB3ocewvyXf+GOu+/m4/39KwXAAfBOSSKxcSMf+va3uWTLlmdlH+u8uCiVikjGw4QXODL3n9BoTk7RnFpZjtp7OMC6dT2UyjKeB66nIMsKgUAASVGJRhNnpRoyTROjUsC1CkjCIKh5BM5Dd3RqQqi9wBEqKwqeqyKUAIovjN8fPC8xUwjB6PAAnpWhMWbPFc8sGDBV8JNuXkM8UXfGnwerUjnqwmidiwbbtsnOTGNbJrKikWxoOO9cQ9UiSvdx6It/TtvRu7khZrGShunUiiiNSBG2dLZwWUu1iFLehseLMiU1RGc6wdbGSLUY0wqUHegzJIZsjVRDkAMZk+ubDc4wimK78NWTKr5YE+/YUp0y9wRM6DChq+hCJRAI0J0KkAo+u6EuRRsem3HZ/aoJ/vM/n+DKK/vp6jpCpNY3f/xx6Kj8LUPqLnZfVZ9tfrb51r/+K3fffjun9+1js67T63mclmWeDAZJbt/Oa9eupe+RR2g/eZI3OA4r3XJ/Lkk82N3NdX/xF+y+4QbCqVS9OFOd55zvf/frHHnyqwz0PUJ7Y573vdmhrRlsG/7r5zI/uNvPn368l898Jcnf/OUfzw34hyZk2lrDWBZM54M0t26+IAntbdumUprBR5GgVu1AlyoOoiaIKkCx4mCYFrGwmOv8nonpQF734492Eks0LClU5PNZcqNP0J0+26kF1Wr2h0fDbNp2Zf1avUAIISiVSti2jc/nIxJZIedBnTpPAV2v4Jl9hP0wkTFoSLiL8gxP5yUqukdrY2mR6DmW8ZFuvWZuMO55HoMnfkRPqz63Tr4sIYVfSSxWjf44cexR1jbtmSuqaTkwob+Szq6li9SVSyUyg5+is3neOLD3WBtbdr+fJ+/9AIcOHuYX9w2hV7L82ptcbr0BFAVGJmAm/CDbd169qmNgWRZGuUixOEM8aBKpTRyVTY/xaYOutEBb0HZ6AiYLCkJrprW9a1Xf8WLDtm2Ghob4yRe+wAeHhvg/Dz3E7/X3cy5T3u8Cfw2MAPdqGkMbN7L+93+f1/3qr9bvK3UuGMODe+hoyM29zpfh5IDF7s3lZT8znYfhyUba0mkSAfDJVfGqbENWh3jIh4OGhZ9AwIdnFpAwCPq8ZfteS2ELMGtCKMgoqoIkKXj4kJQgqj+MpvmelqtzfGwI1RknHTk7X7MnYHDGT3P7xnqapNVTF0brvDhwHIepsVFKuRzCMdEkgSfARkINRrA8wTc/+2kKUxOEkw28/SO/x5atWxdt4+Sxozz0+U8Q3fM9Xh4qEl1NESU7SGdLEy/tSqEpEkMGHK6oeIEIm5oTrIkHls2xBFBxoU+XyHkaWiBEeyJER8THjzNw6/pqw/eTo1kmczrrog4BxWO4rJJzVV6xMcWj0z56UyooPuKhAG0JP4HlqnI8TRwBugMVG0xPwZY0HMWPUAPgD2OjEgiMEY4q7D0wzmvflOErX3mIdeuGueaaE3PbueceCVH8Mle87E0rFnWq88xx6NAhfvylL1EcHaVYLOKLROjcupUrr74aTdMomCajd9zB6J49iH37eGWxyLYVtncK+H4kgv9DH+I9f/zHhOrCQJ3nECEEt7ysnT/4wDg3XHl2t6VUhg/9SYBbbtpCuus93HT9JqDqmh6ZUOloDeJ4MJlRiCc3EIk+tXQRnudRKuWQ7QwRv8ARUCw7IBxioWoPLV9ycGoV5rVlxpO6DUUzTCjRTSS6spfn6OF9rE1NL7stqFYzlaKX0NS8fLTBix3TNDmwZw9TQ0MIoGXdOlo7Okin04sGOuPDw8wMDxPVdXyui6FplP1+mnp6aGxuXnLbQggcx0GW5bqIUGfVFAtZfNIwmgqTMzotqcURTOMZBcus0NVsLVo+NJWgY81lcxMp2ewUmn03kQWegf7RKGs23owkSVXX6PEv0dM278g8djrEhu2/toJr9Ftcuu7JudeFMlR8v8XAqUe4ove7OI7ghz89SG/zAXbOpz7l377fzXt+t3/J7Z7p4AqoHkEfTBUh4oegrzrRc2rUoKvJXdbAMJJViTdtJBJZRQzuRYxlWfQdPsz06dMATExM4CuV6MnleGxggPc6Dj8ZGqL4wAO8xVs+Oi4H/DnwF2cs14FfShJHGhtR3/IW3vrHf0xT07NbGbzOxUWlUsYrP0hkgblz3xFIJ0p0Np+da9R04LGDGpvW9NAQPPve6gIjOQiFIBLk/IVQs2pMAhlZUZEkFSH5kLQgPn8Ev99/wepeOI7D6VOH6G3Ul13HcmCs1EB3z9KTVnXOoi6M1nlxcHqgn4mh0wSwaQpqNIX9SBKUTIuPfOz36Rrbz2+36DT6IWvDvxVS9LVfzsc//Tke/ffP4d51OzdK47ScIxr4eBkeLvuJpRp4RW8jEZ/CgSIM2j5CsRg7WhI0BJdvaXUXTuqQ83xogSDtiTDtEd9ZIex78tCShs5aP87xYDBnYbkezRGNVFBhWocHMxF2dcXofBo6lOVB2QLdlTCFiiNruEoAtCCSP4waiqGF4gSiCULhCIFAAFVd+jf2H/sxPa0l9h49xe4rinzjG78klRrmla8cnFvnBz/wcdnuU7S2PY2S9HWeFSzL4o4vf5mpO+9k+P772Tkxwa2et2xiah34L0Xh6DXX8KH/+A+alxEG6tR5Jsnn83zsN1r5l08s36F87AD8/JE22te+hTe8/lVEQ9VOtC1gclqlvTmIC0zOyKiBFhoaOs4rtL5cKuLq0wQDVedmqewgiapD1PMgX7KgVmFeW6arVjKg4saJNnQTDC7vCHBdl0IhSyU3QiYzybZzmKMsFwYLbazfUA+BXIrHH3iA4YceYmcuR5sQOMABVeWkz0fHJZeQ7Ohg486djJ0+jXL6NO2Ow3Q+z/5Tp5BlmV3r1pFJJgn09tJayyFTLBaZHhnB0fWqKKpp+DQN2ecj1dxMNHb+OdDqvPjIZsaIBKZBCHKFCo0L5mw8YHxaQyZLy4JQU9uD6eIaWtvnB899x+9jbcvY/DouTFd209pezSV68vgeehsfnXON2i6MlV9OV/emJferUi4zfepTdLXOO5seP9bC9is/yL57PsjlWyvc90iGk8cf5b1vzMx/Tof7Tv8Lr3z1+zBNE71SQFhFFAz8yzi4CpWqaSAcgGzRwXVNWhPLHzPbhZFikjU9G5df6SJnZHCQ4/ffz6ZCgWbP4yeZDFsNg26q583Xh4d5h+PgCcE7f/hDbi8Wl02l+P+A1wBbl3l/lseBPaEQucsv59r/83+49vrrL2ix1DovDkYG99LeMN9mlHQYHE9hm2N0t1ZIRKvX+NBYtf3bta2JQsFHS2jpaFHThYwJreeIQLe9Wmi8C1B1g8qKBoofRQ3hD164oke2bWOaJpZRxLVLCMfAMAyCfpfGc8zn9E8H6Fm/84Lsx4uAujBa5+LGdV0OP/k4pfFh/GaJvG5geVDxZJoaUvzVH/0efxrpY+sSDcupMvyvE3D7DlZ0dU6YcHdOhWiKG3qbSAR97CtKTEsB0ok4O1viBJdxaZ4phLbFw3REzxZCZ7E9mLFh2oJDJrxl/fL79uPTKr1taUI+ma4lfl/FqYbmG66ChYIr+/G0AKghlEAUNRTDF00QCMcIhULV3CtPs9MyNTVGTLmPY6cPsXW7w49+9As8b4jXv350bp3//M8kb35zZoWt1Hk+8uSePRy4/XZO/PKXtB09yusti5YV1n8QuKulheu/8hWuu+mmZ2s369Thi//8GbY1fIzLt6+83vv+Z4g3vvnDbN1+BZ0d8bnQVMuFmbyP1nR1pmwqD66Ik0qvPWdovWHomMVJQn4LpKogKuMQDYLrCXJFC1VyFlWXPpN8RcIkRTzdtWzOZdM0yWfGsCvj+OUS8ZBAk+HoCGw6x5yT6cBwqY216+vC6Jnse/BBKj/9Kdc6Z6ciMIBvKQpd6TTZxkY2tbSQmprik5/5DKH+fq6ansaTJO5rbETZsIHb/vAP2X7jjYwODBAoFEi7LhrVjnQBmJQkGvx+SqqKL5mkpb0+WVjn3ExP9ZOOlNBtD8vUiS8IvLE9mMxoRAMZYgvmUsomWPJOkslqvk3TNMmO/oCWhnln4Oi0SmPna9E0rRpiffzf6G2bd58ePx1i/Qqu0X2PfptdvfvmXhcrUFJ/k/HRY2xt+TdUBf7rJ8cI8Di3vHR+OPmdO0Ncd+sDxKPKotypc79JgGW6mLbAdR2EEEhSNf9frgSNcc6ZC7B/OkzP+pXiXi5eMtPTHP7xj7m2WEQCTpgmlUyGHQvG/v86Nsb7akU5H56Y4Av33cfnLIuFdx8BfFWW+UUoxFrP45pKhZcAq8kuPwrcqygMdnfT9Bu/wW0f/nA95UidVaHrOnbpfmILXKMjMwkamrdx4ImfoMo2ilytbVE2onS3J7FcKOf8JJexhI4UoT29eJntgmHPC6FICoriQ1IDKFoEnz/wtIVQy7IwDB3LKODZZfAMVGw01SWgsSjSZ6oIfoVF7fhSDEz76ezdXo8+WR2rEjnqVenrPK+xbRvLsrBME0fXEZaF51h4jsPg8GnSVpaJTJFmv4NdLpErGqRUjx/99HtcaQ6wdZlowd4wvDwND+fg6jNmjuaKKPnjXNnTwivXB9lXUnhMBFkTSXFld2hJcVN3oU+HrKehBoK0xyNsaT1bCC3YVQG05Ck4koKkqvg1jVjAR0NSpVmWODGqc/dokevbHJQFn/cEPDSh0JoMk7FkisLHjPCDL0Iw2Yg/kiAQTRGKREiEQs9q1brGxlaOHwrQ0OgwM+MSibhMTS0OdzDN51f4vGEYjI0M4dgGoWiC5ubWZR2xL2Z2XH45Oy6/nMmxMX755S/zpXvuQXr4Ya7P51kqQ9g1wDXj44y98pX8YyCA8f7389G/+Zv6sa3zjDM2epLXnkMUBbBsuPzyjTSlPfpOl1nfXW2bfAokohZTWZnGpEZjHPLlPLmZwwTC3UiSCkKgalq1yqii4Hke5cIkAaVCKDAviMaDYLmC6ZxJQF1+9t8TkCsruFojiaZ24me020IIisUCpdwwkjlDJGDSFIAzq2QoEhjOyiFi0yWVZLIe4ngmhmFw+Be/4B1LiKL9psld2Sxpx4FjxzicyXBnsUj/gQP8e6VCasG6bxgfZ3h8nP8xOspH/vmf2RIMEl0gQkhAHAgJwWnTpFOWmcpkKESjxOrO0TrnIJ5YWKneT8U0F1WqT8VsprMJ/FoOf60ZCftBLzyJHriWYDCI3+/HVbdhu0/ODcbb0g79A3voWV/NSSp8u3F5aM452NNeYWjgMF09S0+obNp2K/0nDtDTVr1+oiE4cey/2HXNR3jwp9/l2p15eta0c/zIOJY1wuwc05tuqvC1H3+at77996mYHqbl4bgOQoAsufjUath8eAmBoFBe2dgwz4vX13PokUe4oiaKAhwplbjlDENUbyjEMdNkE3BVczO+G2/ktkceobdcZpvrkpUkDvt8RJub2dbVxW+3t2O6Lrf39zPT10dPPs8Nrstyd5U24G2uC6dOof/BH3DvH/4hh+NxnJtu4jX/5/+w+ZJLzvt3ua7L6YEBho8eAtcFRaFr0xY6e3oueOHEOs8dwWCQzFSaWHB6blkymkPXKyTjQda1z48xi5Xq3z4FjICJ4cgEliruIVUFUN0G0wZFVvBQUdUAaiCIFgjj8/mfktgohMAwDAyjjGMWEU4FSViokoVfFYR9ENOAcwzNfUrV3XrO70Oqi6IXmLpjtM5zgm3bc/Zxx6ggTAvXNvEcG8/xkIUHXvVZAhQ8JCFQqFbvLekmmew4k5ksL4m7/HwwS4+sM10ocmSqwL9/+7/47sY8yRUan4oLf3wcPr25Gq5+T1ZimAiXdLXQEItw3NSQgxEuaUnSGTt7XtSoOUKzblUIbYtH6IxVhVDLhRkH8o6EIRQ8WUXTVEJ+H6mgj7hPnhNMbQ/KblVYNYSEKWSGTEFLwKB/qkhUdYlpHkVHJmfJbGmL0p3y87MRH6/aGK9W3QMct/bsgYuMALzqkUNIMkJS8JBBUUFSQZFBVpFkFVnVkBQNWdGQVA1Z1VA0H4rqQ1XVOQFAURRUVV3WNfDTH/8HL3/lExw7VsEw7uXo0X7e8Y7s3Pv//IVu3v+BU895x8W2bY4c3AvWNG3JCj4VirrMeCFCQ8ta1tRztqxINpPhiR/+kGP33svwnXeyfWSE17kuy5U6s4EfyTJ7tmzh17/3Pdb09Dybu1vnRcQXPvcpruz4A3ZsXnm91/5WlM985m9ZvyZM2YSiHqElNX/DKOlgu0GSsarKWDGhbPjQDT84oKgeMjK2J6GoEo0JlbJeE0RDUDE9SmWLkN9dlM9vIbZXFUTlYBuxRNOiiSzbtsllp7BKI2iiSCJUFQlWomTAWA7WL2PntgUcHY2wdcdV9bDGM7jz+9+nec8etp+RX++kYfDQ9DRvdxyO6Tr/NTrKr9k2n+nr43/m8zQss70+4G9vvZX/8bGPEdQ0oqp61lioDOQ0jSafj2FNo723F03T6v83dVZkYaX66bxNPGwtchsVypAtuHQ0VxaFRI9MB2hqv6oqfArBwLEf09M2X8ikUAERvIl4PInjOAwe+RJrO+ZdoyeGgqzd+mvL9t/27fkuu3oem3td0mE49yr04gSb2v6LYAD+6yenKGcf4x2vm5+AeGifTOvmH9HWnDhnG7eQbKXa710p3NR2YWA6xPpNq5gtu8iwbZuHv/lNrsvn55b9aGqKW+3FhgUb+LfxcW42DDoXLN9fKvHNsTGGZZnN6TSb2tsJAKpl0WDbdAhBI1Vx4K6pKfYcOULD5CRXWharPdpPAHv8fkZ6elj3kY9w2/vfv2ykxCyVSoUHf/ojekpZuiUbVarWQRgUGv2RFNfefCvBM6qO13nhYhgGZuE+4gsmR4bGVBzDpKe7MLesf1Sjp2veDTU5I9EQCJ2VFuJ0DhriPjxPxpAjxOIpfD7fed1358PfS7h2EeEYSJj4ZAe/7/zyly6FJ6B/EtaukJHMdGCi1EBXfby6WuqO0TrPPrZt4zgOhmHgGAauYVQFT9sGz0F2PaRFYicoCFSqgqfG4pxrAjA8l7LtYFoWtuXgOjbjpgl6iStjLscyFURmnH/82b30jA2w2SqxzRQriqIAIaWWc3QqSEtzE6mNKRpEgEosxoaWBLcEFjenRs0RmvE0VF+A1kSU9gYfIRfKnkpGkslaVfdnPOgj5lcJIFFxwRIyDhI2EhNCZspRUBQJn6ISCCiENZmYUhVLD5Xg6i54eCDHDRt94HmULZegTyERkLE8eGBMoSEeqSacn+2jLrqavTOel8GrPZYuYowjwPXAFVWxd1Z49ZBqj3nhVXckFGkIVYXJyQq9veB5Z2zY8XN4/6MkkwmQFeRZYbaWyFpVVWRZnitMMfssSdIFcxt6nscTex9kQ+Mk8eD8fE8s4NGeLHBy4hD9fR49a1+8OanORTKV4sZ3v5udr3kNA7/8Jaf27+dPfvhD2g8e5DWGwZoz1teAN3gebzhwgCd7e/lkMkn3n/0Zb//gB+siQJ0Lypvf8gH+8n/9Izs2n152nScOw/p13VhmjooZJOyXyRUq6HaUYK2KRyQIuZJOoRIiFlII+UFVLcyKS0BVKRrVtk1VJKJ+HyOTDh1pMEyXyYxFNOTRtEzdJsuBnO5Hi3aQ7kzPXQOVSoX8zAieOUlIq9AQBHkVNUN0C/KGiisnwadyemaa9pS9KNrAcuDERIDu3i31a24JskNDbDlDFBXA3dks73McdM/j26Oj/JFtU3JdZF1fVhQFWAtM3X8/Y696FZvXrqWoaeiShKxpxDWNkCwTBkZtm5zngeOQP3oUFAUhy6CqSIEA/mAQtRb98WxGgNR5/qJpGr5wDyWjj3RcYzzj0ph05wSAWBhMR2F0QqWzeb4P1p42GBo5SOeaXUiSRKr1GgqVO+fCNWMh6B99kFjs1dW+WPByHPHAXJqRNe06pwcPs6ZncYZJ27YxDJ3Wtu2cGt5Hb0fV6hQJQvHUg6zpeQUPP5ngxstz7NjaxpHD3Uxn+kjXrNZX7/L44vf+hPe9769XfQwcUXXITuYgFWFRW7eQ6aKEP/DiFMkcxyHgLradiSXafg34tZYWfjAzw12GwQbHQRWC04kE69JpPpJO07JE/zvruhwwDPK6jl/TuLmpiQ4hMA2Dvz12DAYHuaRU4qUsH3K/E9hpmnD0KGMf/jDf++hH6YvHqezYwc63v51tL30prW1t+P3+ufbvwZ/+mGtKk4QW6POqBGslm9bSBA/d8WOuueVWbNsmEHj6IdB1nn1M08QoF3D1ApJtUDIDxEPG3PvptMPo6cVjdEWeP9ddQFYFfeMVtJprNB5UCflVfFp1zD1Z0Ug2pFc8P2zbRtcrtfD3Cng6Cja+Wvh7RIFlE/KuEluAZYFpy7hoCDmApITQgg6ThQxNsbOto46A0ayfls6Op/fldc6iLoy+wCmVSkyPjWGUSiBckBQSLS2kGxsvaNjqrOBpGQaWoeMYOo5pgWOD5yJ7LrIQSAgUIVAQaECwJnb6F96LF/ztItAdj4ptUTYtHGtWQHXxHBfPcZA8B8l1cT0HXIHjWMwMjfLAIw9zb99BukpZrtYcXq1RbaCC8Auz6ggNrdBgOR6U/VEaLtlBQyrJjuYIvgW9qzkh1NUwtABaKEa8KUhIUfEUjSnVR8mv4VNVNElGk2RkRUFRZFxVwdAUwqpMQpFXGe5TRZOrWuV1a+PsHS4iHIf2kIztwIkphYqrsLMrQn/xmbfPqxKos1+z6HQStcf8QPJQFiLxIgBTUyWuvhqqt6d5fFIEu3ia9qYFooVgTpi1LRA1IdZzwRLVYiVeTaAVQsITEkKAJ2SqZ5yEEDIgIZCrrlipKr2DDJIMklJ7yBRLJs2h6UWi6ELWNVvsHTxFR1dvvUN1DpKpFMk3vpHu665j065dlEdH+frPf45zzz1cOzPDy5b4zA5gRzZL5sMf5l//239j8BWv4L//+7+TTJ4jG3qdOqugoaEBf/zlPHbgdi7btkSuSBP+/J/8/M2fb2L/qQlQImxZF6e90ePIgMmG3uBcPzcRgel8hYoSJuSXcRzQDZdAwKUrUW1hdAemSi6eKzOd82iICJYrZG/YUDBDBOKdNDVWXVm57DSV/AiKlyUecGgNwLLW6xqegLwOFTuEp6TIFytYlQwS43goqP44+VGPgGKjqh6moyCpEdasX084/PxKZ/J8wLZtNKoOzoWcMAw22jYK8ONMhrfX/j5mGFx6hutqKS7P54l99KMcAk7HYlTa2/Fv2kT6ssvo2LyZSCKBq6okgEbXRadaxM6RZSRZRi2VkBQFW5IwAFeWEYoCfj9aIIAWCKAGAiiqekHvVY7jIEn1EL3nM8FgiKLdgeEM05gKMDVTWVR0qTEOI3aIqVyRxsT88ubUNONj/bS09hCPJ+mf7CAWGp57v6O5zOjwcdo7N9LVs43+w3tYV3ONajLYpUew7Y3oegnHKCK5ZSRsBC6K6zGR7aK3o39ue5esLZIpjLGm62UUSt+hpzPA/sOtfP/uUd735vkCeTfufphjx4+zccOGRb/TE9UiKKYNjlAQyMhKtXhZxVNobXQ5PVWio9E9q5BdtgS25yNQyzVgWRalUgmASCRyzpzRL3RUVcVQzhSPZHTgTKlYA97U0IAFfN80aRGCl2kayRXagKSikAyHYcE9Jeu6zOg6l6XTiMsuI2iafG1oiOljx+jKZrnBdVnOBNcKvMV1IZPBuPtu7rvnHu4Ihci0ttK2eTNdXV3YDQ00NsUIxpe+SU7oFhMjh/nFwAkiMhRlP2pzC1fedHO9j/k85kwhNCh7xGdPPQ1Ccoxs0SBZmygOamCJM8aXmiBTqKbdOD0CDQFYmxYouDgCcrpL/5RDd3OMgi2j1QoonSv8PbTK8PdzMRu+bzkKHj6Qg8i+MD5/lGA0SHiJe/jYqI/B6Wkao9WUKZ6o5qGfLvlpae+tO6OfAeqh9C9QhBCMDg1RmZnC7zk0yYKAVBWUsgKmJZXO9ZsIr5DgWgiB4zjzgmelgmVU8Kyq4Cm7LggPmflQdpXqzKxGVSdbrqLuLJYnyFsOJdPEtmw8x0ZxXYTn4NoOwnWQXaeqgrkeMh6aEPjxkD2PomFwfGyC7MgwM0ODmEMDNJSybMLkCv/y3/+wAYdj8L7u5fftG+MyoW3X8Lqt1TK+Zi00fszxUVRDEEmQSCQJBIIkQn4CmoZPUwiqCiFVxq9ISwqedk0zdKEm4FXlQ0FtGVWxT4h5abEq7s06ZKEsC7bXkkMbjmCiZON50BBWifllCiaczFcr16tydYCuKtVnRYFl6kE9o+ybhnD3fjZsEHzlK4d497uH+OpXD/HOd5pz63zt89ez+ZIPsWvds79/szzeB9t7Vz5GkwWZin8na3qewx19ATI1Ocn0Qw8RLJW4/8knOfjd73LJwABvcJwz0yHO4QF3ShL3dXbyss9+lhte/ernPNVCnRc2juPwP/772+hK3sN7Xj9DIlZtc3/+APzbd+Dtb+pl/YYdDE8m2bJ1B7LaQHODhu3C8aE4W3oXn3/jGYhGI4yPSXTFqwLBmWQMMD1oTZ39XtmEsh0l0tCNomjkMqM4lYlq4aSwOOd9FGou04qCLcXwRdpIJBsplUqcPPwwG1uKi4oTZMsSxyejbLjkSgKBAOoFFs4uNjzP496vfpVSXx+vWZBj9Ge5HNtzOVqAvxwc5Pf0qpCzt1Lh0PHjvNtbOSLjU8C7qObYW/R9wEnguN9PtqkJe906grt20XvZZWzu6iKqKEi19WbFUk9RkGQZv6IQVBRcwKLap3BlGW/WZer34w8EkAMBtJrL6lztqWVZ5GamMUpFhOsikPD5fciqRigSJRKP19vk5ykLK9XnCxXSCyZlXGBkXCIZLRBd0D4UdRC+3cTiKWzbZmroB7Sl58/78RmZZNtr8fv99PftpyN531wbZQs42reG5qYmJMlDlQUBX1WoADAth+HRn7G2c0GF+iNhLt36Mn75wNe5/rJpprMOBw4cpCV+mM1r5/frX7/TzZt+9Rs43qwAquLTVAJ+bZFpYZa8Xu33CtdhKlNBlT0CfhfXlSibMuGQn4ZEkOlSgGI+g3AKxAPV/mjB8CPUKGt6N58zdPuFzH0/+hFXDAzMOTbHbZsj2Sw3LpFLGaptzbdVlU2qilpzjgY8j4gQJDhbUD0XgqpYOqzrFHSdvokJBvfvp2VsjCtNkx2r3M6TwF6fj/GGBlp6e1nb3o4ai+DFIkTTCdrTcU7rNpVKmat8i0Xysgc/0xroue5GDt9/L252ChBI8QauvfV19Kyr9/PPRaVSITszhee6BEIhEsmGp9WnsCwLvZTH1YtItk5Q9gicYx5upJSjvX3eNZrJu4QChbnia4UylL0rKOXG6U6Ab4lblunBqRmFWDSEpnpIWPhk+4KEv89i2FUB1PE0BD4kNYSqhfEFo/h8vvM+bqZpMj01jmVW+x/RWIp4Ilnv050/9ar0FzOTY2NUJkaJezZJGUwhmDRsHE/gk2XSAZUBoZLuXINjGFiGAZYBrrPA3emh1ELZFaoi45mh7MvhCLA9Qdl2KNoOpmUiHAfJdcB1cB0Hz3GQXbsaPu95SMJFFQIfHhEJQhJUHI+cbVMxLUqGwej0DMbkOFo+g1YukJmahFyGlFnhap9H0yobrnEbPliAz+2CliX6PFkb3nYswl/92msZc4Pkgw1E2rvpaWvCr6pIMoA09w9qJkQJZCSQpFqO0Ko4Kku1NaWqcCxJEjIgSyDL1S3IMDe4UKWVk8bvmyqxLm4TXWJC2xOwd1pma2uUgCpzOAtr41415N0TOJ6o/e3heQIhBJ5Y/Dx/NVel2dpPq/kvq/utSKBIArX296zwKstLCwP3njbY/YpjhMNw++2P8a53TfONb+znbW+b74B9659ex7rN7+DS57Afsq8fdp0jxaXpwvFMD9t2XP7s7NRFxvjICNlHH6XRNDk5NcX3vv1tmvbu5eZymZVSP54Avh+J4L3jHfzGpz5FPL6M9a5OnVVwYP9+bv+3P2Ni4NvEI4LrLoc3vAK+fWeaWMNWete0UbQ2Ek82sa43hQJkixKZUpq17YsHjqcnJFJqhMgKJqP+HHQ0zlcXLehgiCSqP4VRnkSypokELKLncITOUjSgZPgR/gYiiQ6i0dhcGLxt2+x95Ofs7ikuec+2XNh3OskV17yiHjq/Cn753e/iHT3K2lKJrtqyO3M5LsnlaAc+PTjIx2rCqOl5fOzIEf7BNJfdHsBvAP/EKnvjwCRwSJYZTaUor1lDaMcONlx9NTvWr8dfc7fZgAGYzIulAUUhoChotfdNqkEYHvMuU0nTqu7SYBDV70erDdAK2Sz5yQnSwia4QPzKCbAlmajfhx4Ik25uqYujz1PmKtVbHralE6sZ+CazUCyA51l0d5qLhIKpnEIsfQ3+QICxkT7Sob2L8pQeGUwSi7SAZ1AuPs6G7vn28MSQQm/7DpSlqpACTxw+yM6N865R3YSp3JVosoLK12hMwg/vHGN6Yh+/9obc3HqFEjw+8rfccP0tK/5eW4DrVPOLFg1oTVSXG7aHZXvIkkQooCBL1erOY+NTrG8qEzyj7TYcODERYcPmSy9acXRmaorDP/whL6lU5tqhPcUiVqXCFa67yASXBe4IBNiwbh0EAvjCYZyai8OxLHRdx9J1KJVQDAPNsvA7DgHPI+w4RIEE5zbWCSDjuhzO5bhr715Cx4+zo1jkpUKcK1gCgHHgfkVhIBpF6ejg+t5euiIRRiSJok+BkJ9ILEhHLEiDT0GS4EejOcrlErf6HcK160AXcA8RzJ1X8YZ3v/d8DusFI5vJkJscA7cWgaBoxNNNJBvSz4v7tmVZjAz04XMrpNRqBfiyK5GxfWihGMl0E4FAgFIhh20ZIECSVaLxBIEFbsZ5IbSEZFdWJYQuxAZKlofwT5KquSxsD4rFLKmai9R2oW9kAym/QdPynjAmS+APsShn6fniCDAtsGwZBw0h+asCqD9KMBjG7/c/L/7/6iyiLoxerNi2zVjfSdxygU5Z0F/SmSmWsEyDgCwhSQq2opCMRgkGg7Sq1RvVMn2YRcwKnqbnYbseuuNg2NW8njjVkHbbsfFsG8l1UNxqGL0kXBQh8CMISoKoBAG52nBlLYe8ZWPUwvGrPRqHbDaLPjOFl8sQMsq0CItKqcLxyWmkcoEtks2OVfZVbAEPm3BICpCJNyDaWgloLgePHuPWuMHrGz00ueqo/dGUxN9PhHjP//4rXv7yVyDXQkUWHR5p4ZJl8gBILHGZSUstWrzyCv8PruchXA/bthk8dYLuQIn2sJjLn1Qw4VheZk06TGNYJWfBWBlawhBUOK8bzWqxBbiuR8WGiiMwPQVbyAhFncsTKisKJ4f2cMutIzgOfOc7D/CWtxT57nef5I1vnHcO3P7Zd7N952uIRSRUVUFGIEteTVwWSJJAkauHSFGqgqxce5bk1Yn252LfKdjVu/I6ZRNOV9azecuup/+FL2JO9/VR3r+fdtsmbxj85733kv3BD7hiaoqba8XUlqIMfFdVObR9O2/+679m17XX1sM66zxlvvz3L+U9t9w39/rrP1RpbN3FK65fz117UlyxewNjM5G5yvT9Ixr+QIS2xvltCODkgIRnKwivWruuOeEjtqDRzRrgKNX2q2gG0WQLH0USYRffKk5f24NcRcLyImihVuKplmUH7P39JwgZT9IcX961eHpGQ0tfQWtr+7m//EXOUH8/2Z//nOHxcdKWxQ7PY8Zx2Dc2xq2uy18NDfGRcnnOefUng4O8ZWZm2Ymee4DvAB8G1jOfCvx8MYCDQH80Sqm9neDWrbRecQVbt2+noTZxZFN1epmShJCrKX2CNcF09rSbdZjatb8rwqNoWyjCQ6WaezCoKqT9GlptQFcUoEsqIZ+KHUuSbEg/xV9R55nEcRxymT7SUYtC2UHTTDIZ8HnQWBv8DxV1OtvOnOzxkWjciVHOkZ/Zx/qu+UJLJQNso5lk1E//6BQdLafnJsQdAUMjnfR0LF2H3LRdTg//jPVd89+351CYNb2v5sl93+IVVwxS0T0e2XMUYT3Jy66aH15+6444b3rnQwhZxXHBcWUEMgIVSdGQFD+q5kdVqzl3C4UcjpElGXTOMhuULJnBkQw9qRyhZSa0dBuGC80XdXGmh+6+m/KxY2xxXVqo3p8OWBZPlEpEXJeIJKHLMkY4zKtbWog8hTRsAtBdl5xlUTAMdNPEMQyEbaM5Dn7XJeK6xIAoZ6dldDyP/zp+nGMPP0zvxAQ31vb1XBjAA5LEsWCQfHMz23p7ubqhgQZVJQsMSRKHVJl0wOWmZbLI7BEBjFfdxnWvuvm8f/f5YpomY8OnMQo5LMNAxmNNRCNSu7gcAVlHoRyI07V23XM6GWXbNgMnj9LpKxNYYjfGKmDLfjzFR0hTaApX/1dtD3K2jCNkNFmAXcGHhyxVzTluLYzSRSCohlUKzjTsVF9LUtWso0hVDSNvG3R1z6exGZ3I0dY4334cOJZiU3tkxbGi7cFIEdasUNhobt2zwt8DyFoEX6Cqr9Rdmy8o6sLoxUo2myU32E/cNXmifxCrWKCV6sxfFgkUhbXxKEOoOKEIVzcmqsVzhMByPSzXwxUerudhOQ6m7YDrzjk9bcuuhtJ7LornoHgeihBoeAQlQURibsYNQHc9MqZLsSZ+CsdBFi5+4RKVBBE8RrIFRiYmMXNZAkaJdmzWqZA1LR4az5DLZWl1DK7xCyKrvA+ctOBhV2UwnEKs6+GjV3cT88/f0O8ZynPfwBRpfZojI1PIwmPGVaF9Ix//q8+yY/dlF/Y/5gLjui6nTh5nvP8oEUUggFBAZU3ST0CVqThwsqCgBMNE/SqKayPhIAsPz3MRAmTcar5XuRomEHyGtCVPwAPTD3PddQYTEw4PP/wAr3+9zh137OPmm+ebjn/864/x6294FQAniwk2bz/bkek4DkIIXNfF87y5Z8/zau85eK6D8JxqcSfPrf7e2t8CF+G5CFFNBYFwqnkLcAGPiZkKWzttIiuI7kfH/LSuvZ54InFhD9SLECEEJw8exDl5knbbRnJdHhoc5Odf/Sobjx/ndbZN4wqfvw+4q6mJ7t/6LV7/0Y+SbFip5EmdOmfzi599gxu6386stt4/BBWxlVhyEwOjISKJjTQ1xUklGgj6qzegQyfCNDX7aExU3ZcnTkFMhZZI1RFquTBWgIqjsq4liO16zJRtPDxiIYfkKt0IugU5XcVTUoQS7cRiySUnAXRdJ5+bwihOIOwM45MFrtogVow8sAUcGm9n5+5rz/OIvTh54sEHkQ4fJlYscqRUQngeh4eH+VClwvFymZGREV5TC583PI8PnzjBh8pldp+xnbuB78Ri/M3atRRcl4PlMqOFAka5TNg06XRdtgJPJ9vrSeCY30+muRlp/XpSu3ez8bLL6GlvR5ZlbGDENBkv5lE8F1kCT1ZpjiXQwiGEZ9OoLJ5sLAkY8xTWhP1z4uiQA+mAn6ysEU+nUX0+ZFmuDwgXYNs2ruuiKMpzdlxs26aUP04k5DFw2iAku7QvKNxmezBplGhvnu+PucDomEpnOkixYuPJY8QXnJT9oyrdTW2AoG/oAOu75gWJvmGF7tYdqIqE5dTygLoSAgVJUhgYOMjlm4/Ora9bMJ5/BfFIhPLM39LZIrjzvmlyU/t548vGmdXiXBe+8eDv8ea3/99zHk/XdbFtm0IhRzmfQcFAwkKIap9RlgT5ksm2rmU3AcDR8SBrN1150Z7TBx59lN7+fgZ0nUwtN3JIVdkUDOKTJFzPw68oPAE8k1YAVwjKjkPesijXIhld0wTbRq05T0OeRxwYz2T46YMPop44wZW6zs5Vfsd+YJ/Px0QySUN3N1e2tfFQLMQHGpaO0is6Lg9OF/m57eO6172R6259LYlE4hlx+02NjzE9cJJ2xSBWO9+ndJdTRRtZlulOhWkMBZAkyLoS5UgTgWCwWrwYkDWNaDyJ3++fGxstRNQiAmcfs8ugmi5m4TrVFy7CAxB4olbMQVSjCIUQFPIFkiJLfIXL4kQe4n5prtqEIlUjD2eFTFmajzRU5KedphPbE+QDpbmUIadH83S1zE8OHzwRZWvbuXPJ9uehZ4EwatjVh32Bwt/rPC+pC6MXE5VSiezoKOTz+FwXA8HR/j4usQu0K9X/GtuDUcNC96Bf9nFtcwMnPBXF7ycsCVzHwbStqtvTcWqip0Ct5fUM4BGWICQvzr/oCSjaHplayLvlVGNYVOERwCEhQaLWwbYcj5PZAqMTk1RyGQJ6mQ5s1mngk8DyPB6ZLtI/NU1AL3GZ6tK7yvam5MF9psRAIE66aw3Xb+ylKRRA9+BLOnyw9+wbn+EI7hzIsXe6gpXq4KZfeQfXvfymC1qY6pkmm80weOwQccUk6Rd4AqZ0iYqnEAhHSbd20NhUnVu1bZtcdgYrP4XiGPhll4hWPS6WIzAcF9up3lCFAAkX9QIIp4btclw8yPbtLocOVTh9+iFuucXmvvse57rr5te759uf4YYrqhVNT8yoNPVe+qyHS1cqFY4+cRe7uitLdpR0Bw6ONnL5VTc+q/t1sWPbNif37kUaG6PNtgkC/cUiX/vOdwjfdx83FousNFUxDHw3GCRz3XW88Y/+iM1XXVXvrNRZFaZp8uh3w1x32fxA4j9+1kw0tYXd21sYnOxkx5ZOjg/52LKu2h5VTJgZTRFpEoyOQW98Po/eQoomnMrAhs6l3z+TavJ8qDgh5EAT8VQ7odBiFbVSqZDPTmKWxhF2Dp9UIRZ0FoXgryYlCMC+kVZ2XX7duVesA8DI0BB9+/YhFYsgBAUhOLlnD++YmeGfh4e5rVRiNhOM5Xl8bnycw7kcKc9DV1VOh8M0NDXxkqYmoqZJ1LZJuS5dMDcBZHkeR3WdU8UihVIJVddpsm0u4ex8pOfDDHBAlhlPpch2dKBuXM/2K7azvXcNQb8PT8CoK3FK8nN1e+Oc+LkQQ8AYCj2h6slW8KoCmq+Ww94FXImqi0+WQVFB86EGAvgCQTS/H0VRnlYfy3EcisUCxcwMuA4eoPmDpFtan/OQZ8MwmJkcwzJNPM9FUX2E/SqqJHCQEJJKJJEiFHpmipy5rjtXG8CxLFzbwLVtcE1c28K1KlQslzXps1Me6bagopRoWNDlMm3I5/wEfAoTmSzruytz79kCxsfjdDbFOT06TWvz4Fy4vQsc7uumo70bv1/DrymLKsPbtkv/qa8vCsF//EiUtVvfw96HvsrLLn0Cx4W77jtOdnIfb331fNt89yMavdceJxTScG0DzzUQrgmehSRsZMlBkV1UWeBXqxNV2hJ915IBmRJ0ncPoPJJVibbsJhZbLhP6C5v+EyeIPPEEjSuM9x2qouKlz9peLY3teRQch4JpohsGlmkyXixw+OFHEHv2sDWT4fpVhtxPAA8oCqcjEbyuNnZs7OLSlgRJn4LlCv6lb4xSqYQxMcZwvoAuJMrRJK+99dXs2n0ZdiRGoLGFeEMaNRTGHwrh9/vx13I3nwvHceau10I+R2HwOBv8VWdz2fE4PF0hKjm0+auuyElbIuOqrGlK0Rj2c6IMad98vOHc5VVLxbYwpnHh+9IZ65wZ87jaGhT9BqyJr6wmZc2qOJR6FpvlMcOktbPqbu8fLtKzwAl/pC/IuqbGs9q+mYLOyHQOgSAVi2LIceKJCJISQvVHCAYj9fD3i5+6MPpCRghBLpejNDyMahiEXZcQ84XB905NkcoM06N62B7cP5WnZJp0S1WH4KhQGUZlWzpJXFMISR4hCSLLhCNXre8OOcvGsOZD3n1CEMIlJTNfIa6G5XicyBToGx/HyGaJmWW6JGdOBJ2lr2Tw+MQMRj5Hj2dyZWD1IdH7TDgkh5CbWmntXUe6qYlyMIKdSCO3dhDqXkuko4t9D9yLd/Be3tp0djjNtAXfZh3v+73/7wVdhTKbzTI+PIRlmfgDARKpBhrSjeecUS+XSpQzE2AW8WET1jgrLMJlVjj1sBz3vIXTo1PTJNYfpKUFHn44g2E8xlVXOZw48QTbtlXXyeVg8okvsqG3A4BMBcoC/D4FWwSQtBi+UAORaJJAYJVJ+J4iY6NDjA8+yabWyqK8UzMliRNTcXZcel292t8zRKVcZnDvXqSZGVptmzgw7TjcsW8fR7/+dXaNjfEaz2O5fpYFfF+WeWLtWi7/jd/gire/nV/+4k6+8ZefxD8ziSJccrJGw9advOJ1b+DqG17Gus2b6/nxXsTYts3tf38Z73vd/rllX/2+j3TLTm5+2Tru3xchnuxhTVcU3UzQ1FBtU8emJfR8moDm0LbCmLk/C+kkiwqcLMR0IF9RseUY/kgb8UR6rhpquVymmJvCKI2DkyMgl4kGvRUd7QBPDsCmDvCvoD+VTDhdWscl257r4e4Lm0KhwJ3f/CaZo0c5efAgyWKRN5omSWBIUfhFWxtN11/Pm97/fqLRKJIkYds242Nj9O/dS/HgQcqnT2NOT+MrlQiaJpplEXUcWoWgC1CFYNi2OVwoMF0q4VYqJCyLdZ7HRs4OPV0tJnAIOBUMkm1pprSmG2XLZhq2bOM1l24j7ju7/zBgg19V0BQZT5JxkEiqEqokoSKhmwbFSoVYOETQX71X26Iapu+cKZ4qCqgaki+AGgoSCFTDD5cTTm3bZuz0AFHPwHUdimZ10KvIMq7qI9LQTGPT0iHczyRCCEZOD+BVsjSqFkG1+ntzJuRshY5UlKCmVJfZKsFoA5FVCG1zIqfjYNsWrqnj2RaeY1bzDopqXQAJgYo757pSleX70f0l6FlGDMwaDr6YTthf7fcPDFXLD8R8NbNYMEfXAlfpZFbCsNYQDgWYnnqYjd3z4fanhlXaOm7EFRKuVy3TKmQNSdKQVT8njj7Irp7759Y3bDg6dhOxSBw38xnWr/F4+PEcpewRLtvcT2LB4fri917C+979v855/FaibMF0DrrPcboMZVTirRevMGrbNgd//nN2FYvLrnMayKkq0QUDKItquyQLgVTTCmZ7UQtfzy6ThUCmlgqr9pAXPJQFz+fDEzJsCVXPd9f1uPvx/Tzw9e+wvu8UN9o2ravYhgncD/SFQmQb0wy2prnWzXPXqSE+ELS4yl8VEo9a8JmKn/Suy/nz97wNw4NJDyqSApqPoN9PSNNwAAcJBwlPkvCQ8SQQslLdkKKgSDKqIqPKEhkPLolVJyt0x2P/ZJGdEQ//mWMxAfvLKh1NDbiqn4gKkecoi1S/CWtiVYORh8CnyGe1OboDWQvanka+zvPBFtXw9nKgSGMS+odL9LTNO9lPDPqI+FporV3KhYrJ3uMDJBMm3e02kgQjEwqjM3F27LyBpubVnD11LhLqwugLDdu2yU5OYk9O4rMsIkLMVQB0gbLrUrZtXMfh4FA/r9IsXAE/GJnhasWkZUE/M2u5TFguDzsqt3a30OhX0V1BxnQo2jamZeM5DpJwCXgeUdkjJUNwGe0gbzrsmcwwPj6BXMyTtA265bNFUICi7fLgZJbxmQwJq8LV2uqLJk068ICjMhJrQmzaxoarX0Ji7UbiazfQ3Nm1YojDvkce5rGffpet7hQ9qokh4DE3hZ5ew6984EN1oauGrusUMlO45QyaZxJUBCF15RxoHmDWhFPbcbFdD9cTSMJFkwVHZ45wwysmALj33nFCoX309WX4xS8GCYfBcaC9Hd563Vfo6ay6W6fL4KrQnFj8XSUDKpaCTRBJi+EPNhKNJy64qF0sFhnoO4xt5JDw8FCJN3TQvWZd3Yn4LJCZmGDy8GHI5WixbRKAIQRPTkzwvdtvp+vAAW41TTpX2MZe4O/DAfA5/FncoaPWzggB9xnwSTfOS295Da2bt/LKt72Dts6VtlbnYsKyLIxyHqOYw9Qr/PKur/LOm/5q7v0DxwD/djo6N9E35MMf6WbLxlaODyhsWJuaaw8PnVDZkIou6UiaxXThdAHWL7D7FXQomQEkf5pIop1wJEK5XKaQm8AqT1ZFUKVCPOARegpui2wZpnKwYYX0oQdGgqzd8vKzHKl1nhqe51GpVCiXyzz4s59Rmp6muaeHl95886om82zbZmZ6moEnniB38CBieBhyOexSCbVSAV3HsyyCjkOD69INKLVQ/OFCAb1cJmiadDoOW6nm6nuq9AOHFIXhVBJl8ybSV+ymcfs2ejs7CEWiWJJM04Jz3hJw4OQpfvD979G//wlKE2OEhYepaMQ2b+UDH/1d1vZ0V8UAWUKVZVRJWjSQtkXVmebUnj1JwpNkhKyCT0P2BygVS8S9MtMViwbVI65WwzNLLkzZEpbso6VzDfHkucMlLySjQ4MEKpOkfO5Z79nAQElhTToOkoTjeUzpElogALaJcB3wHCTPQRIeclVGqRa3rEVoqcrTDzOdZSVhFGCsZJJMW5w4BWvjLMq/OV60SLaWF024nBiK0tq6jrGxcdY071/kGj04cAnNTV0I18A7w9WJ55DL3c+mnnlH174jfnZuvIoHHnuYl1x6DCHgRz8/yeToft735vmK08dOgZb8V3rXPPV7tivg6Ahs6Vh5vSNjIdZtvuKi7vf1HTmCfPQoPbZ91nsF4JimcWkkski0PAqs5fzPS0Ht+q4VfPWohtG7VCcYZp/nisICzL6u/S0A4XnVqvZCkFCds6ILZ0yHe08OcuQnPyOxZy9XF4urTgXwn8BdUfiHpqVD7P+yqCK97LW88+Uvpdmvza1jC5h0oSgpSKqPaMBPo19bsiBtNYUdmLVnW6qGnI+4sC0mCC8zLnYE7C1prG2I4AlwqYWqS9UE5rIkIcsyiiyhKTKaLKMp0gWpwTCLEHAwbyHjEFI8ZAS6K6EoCp2JAIGa7bTkQMmGlmWG17aoHgevFnngCfCEhJBkXGrFI5ARklz9fbKMpKi1v6v1K2RFQ1ZVJEVFURQURWFm6jTtyUFOj+l0Nc+3G6fHNUyvg/aQi+faPHzkONddbpw1gewIeHBflM3bb6ax8dmfaKvznFAXRl8IGIZBdmQEMhkCrkuE6k3IA0quS7kWLmNYFqVSCVEuE7AsphSX60OwJ1MibRToqV30p0omvxzPkhAORrnE/sksBc8jFgzylu0b2ZoIL9t4egJmLIfhksHJ6RlK2Sz+coGUY9FZE0H9S3zWE4L9uQqHJ6ahXOASyWbneRVNkjgca8a64np2/toHufLqq5+yCOZ5Hof2P8nYQB9aIMjOK68h+Sx3oF9o2LZNMZfFKEwh2xWCkkvIt/rOkOm4PD59D1dfXQ3B+sEP+vjWt37EzTeXue02wex/5Z498A9/08bH3v3/sX3zek7MQGczBFbxRUUDKpaKQxBZi+MPp4lE4y9oB3Cdqltm4tQpKiMjeLkcTbZNkurNZsgw+NZPfoJ9xx1cm8vx0iU+PwH8SQg+27p053bCgT+giWtedTPhng286v2/SUO6XkDkYsU0Dcr5LOXcNLJr4MMjpFYHIMVSmROnbuLSLfNdme/d0040tYVrL09zaqQZxd9KT3eI06Nh1naFMB0YHIKZKZmAVvXCtCT9NMc0zjQgH52GhqSE5UXRQi2o/ih6aQarMoHk5AgoBvGQt6pw+6WwXMiVJQzHj6vEUQNpxiemWZOaojFydgGmsbxKxulmy7YzM2DWeT5h2zbZmRlGjxxh4sABrMFBfPk8MdNENU0cXaeo61imiWJZxF2XJs+jrOsMFIvki0UUw6DRtrlECM6hAa1IFjgAnAz4GU83Ety9i/C2rbiuzfTEJPKpIxw9fIjf9FW41j/f5k678AknwY0f/B1ed8vNuDXhc9ZB6lEd3AsJQK6FecookoQkSWg1IdVDIodAN3S6AmLJvuq4BQXJTyIUqlUUXVDUUqptGxmJ6tsS1fx21NLnCeHVxBcPz6NW/kMgavn1qmMiAcJj9k+ER8k0WB8/exhUdjzGciamC5YHDSGVxrCGql44ofN8OV2C5hRnudFmEcCTQ0XWpyC8RBfqVL5I74IQ+IoJI+NJYiGFTP4EmxcInf0jMh3ptWjK0gOLAycG2LJ+YK74q2nD8NgltDenONH3DbZtcDhyskwpd4xk8Cjruuc/+6/f6eX97/38sr/TFmDbYDtgeRKupyCEiiepIPuQZB/Zgk5bNE9ymcwGBR0Gsyki0RiKqtLc3Pacp2t4pug/epRMfz9t5TIxz8MChmUZV1HYEoksOl914KSi0FjLdz0nWM6Kl1QLHwVqy2cfC085SYhFYd4SLHKUymc8JJa+ZqaBY5Uiu1VnySJApoB9tsrxU32Y99+D9dBjrB2f4voF5qIz+R0VPtlVTR23FELAr5RjfPgtb0ZLNhCORImEg3SFgwQWnOu2gGkPiih4ikrY76cp4MO/zPXgCnjCgd3nGJYeKkm0JSMkVwoJYbZgcu1a8GbTnVSFVA+l2uZKEpIkI8kSiiyjyDLaEtWYF7ZuYyWDVMCmJbC4b224cKIgsS4dJqhK9JcgoCqotYSiBUsioMpoqkJAUzE9CUIp4onEnKh5IbBtm+z4fXieTkuyPL/fMxJSsAu9KBjo6+eKHRnCy8xZ2gIefLKN62984wXZpzrPe+rC6PMRz/Mo5fMUR0fRSiUiQhBisRBqWxaGaVIplfAqFYK1znAj86Lpgz64Ngj/eXqKNweq9vAjeZ0nxme42Wfy2WMjXILJzQGXkARZD75taBSiKX79im1MWy5Z3aRg6EzkitiFHAGjQsK1aJOWF0FnmTRtHhyfIZ/N0ero51U0qc+GvcEGjCuup/ft7+eKl72iLnA9j3Acp+qKyU6AXsSPRWiJ8PtZTkxPUlL3smtXtbN8221f5BOfGGfDhrPXtW34zfe18+cf+3um7AgbO1lVteYzcQWUDajYKi5BZF+CQE0svZhn/S9WTMNg4sgR7JkZvGKRdE0gBSi6Lr84epTHbr+dLadP89raBBLAJxV4awcr5in+vwWNN7z6VTweaaH52pdxy9ve/kz/nDrPEkIISqUihekJMAr4JJuwAqEzxhIuoFse//H9t/HeNw7NLf/KfwVoaN7JrTf1cu9jfmKJTnZsaWJkUkL1pRgalFmXZK6Qku3BWEFioqSyc00ETQHXg5zuMJjXSMb9yG6egKITDwsCTzHNYjX0XsJwArhKHC3YSDjeQjQaXRSC7LouRw89jl2ZpDNVJqBBxZQYzoUJxtrYuHlHPWfWCxDbtsllMkyfPMnwgQMUT53Cn80SsywaHYek6zJlWUxVKlR0HWyboG0jDINyqUSpWMQpl4lbFr2ex2bm0zCd974Ah4Ejisx/+ODvmj3al9nY7zoN/Opf/C0b13QRVNUlc5gu+R218HubatRQR/hsUc9wPQZnCpR1A8sDJJlYNEo6Gpw7xyXmw3sX5tuTa3/I0vx7s4Lp7Horua2mbPD5IL6gmyqAk9MGMg5tIUFQqZkLTBjXZdakAkSfSufmHNhUCxRZLpiewHbAEQJXCIQAV3jIgOe5hH2iWlxFAHhzQhUIZkzYukxC25LpYocKJBdYkgdHJTpSCUanijQ3jeGrnQMe0DfQwPqOpYsi2q7HyaEHF4mpTxz1s2PDVTzy5BNcsfVJZAm+99MBZsYP8r43F+bWm8nCw4P/j127XoJABdmPrPiR1QCKFsTnD82lZViu3+c4DsePPElrNEsyvHgY2z/uMDxt0Zb0SIZtHAfG8mEkfwObt+6+KPuStm0zNjxMMZMhNz3NNiB2xiyfCRyXZdaHQgSWuYY9YBBYRZrrs5h1lM66RT1Y5CwFcGtuUVF7b8wyMStFuiWXZkUgS1XxcsKFAU9hQyLCiCczOTREZnKCLldnsK+fU/fvob2vn5dZFrPBFQbwP8PwmXNEUX+6qHLzq15JVyrBfkfFF4vSHIuTkVUkn5/mSGiRmxRqbYAHOaHgKgpBv5+moI+gUj3Ghgd9wJZzZG0YMaDigl+pCtdhv59kYGln6vlwlpAKuDUPe3UmSaHieIQ0i/ZlJhMsD/oKKt0NQSYthTWJWj5qG1xZIxmYb/fGbT9NrR3PSCqr8bF+/BwlHCjOjSOzJdBinfj98OAvD3P9bmPFbew5HGLT9l8hGn068Rd1XiDUhdHnC7Ztk5ucxJmcxG+aRKl2Uos1IdSwLCzDQC+XEbpOwDSJuS5NLJ49c4AJ22ZG18lbJo22TZ8Pbo2C48EXT4zw/qDNnx4a5MN+ncYl+mTHbPjnio/rIypBx6JFclh/DhEUqsUCHl1QNOlS1WXteRRNesD1Mb5+B/HXvpWr3/pOmpubz/3BOs8LhBAYhkEpN41TyqK6OkFFEKl1jJ/IHiAaH6CtzeUTn3gY236QT33q7HCdWfbvh29+9Z388Uc+xGAWVE3CpymoVAgoFpHg0on0z4UjoDInloaQfUkCkTSRSPScHdxqiOMkucwEIFC1AK3tawiHn5kCCnWWJpfJUDx+HLtUwj1DILWBwzMzfPfrX6fhscd4la7zD374u3NE2g3Z8Mc5mXUNcaZae9n99ndz0xt/heaWlnre0ecYwzDQdR2ASCSyqoHoXCqQ0gyasIgoguACocbyBGXLw7AdPNdDxsUvV12jP7rr33nTLV+eW/fhJ8AX2cnmTZsYnpRJN3ZTrKTpavPz0BM+rmiPs5Txo2DAwXGZjiYI+D3ioZVzfa54DBzIlWVMN4CnxPGFm4jGW4hEo6s+Pw3DYGxkENOo4A9FaG/vrk82XmTMiqXZ/n76Dxyg0NeHP5slahikXJd2IUgAo6bJiGFQ0HVs08QxDDKFAqJQQC2XCRgG7Y7DNuB8yh6eBr4cgz9eIepwwoEPek3cfMsttHavoberk2gshpAVPFkGWUFRVRRVxaep+DX1LAG134WecFX0mDYcpis2pmVRLhe5JOyRnBXkBExYEqdtjZ1dTfiVZ64tHzUhGV6cY70/axKVLdJLuJFsAcdzEmsbw3PuMgE4nsDxwPUEjhB4rsDxBLYncL0FzlVmxVuBJAlkSdRyM1YFIUWqVnhWpepDkVmynVqOgg15DzpXcK0NZCus6THnXrvAyFCAzsYgx0b62bRmvo/XPyrT0dCLtsT/gS3g0PEBtm+cd41aDjx5cifNzWuYGPgcl28zGR6zmJk8RjF3gJcsMLl/7cdNvO23x57WvdpxHEaHBynmJwmo1f3OFF00kWNHl31WtElBlzg2mWbX5de9oAq1ni+GYTBw5AhKqUTCqApIuUAAXdNoA1aKrclS7ZM18NTzH58Po7aN6xlgmUzpNhICgUQ6qNES8HPClVgbCxOQpaqQmstTsRwMf5BtiTAP7j/AD/7+83QdPUZvqcy+OPxB48rf+d0yDF9yBb+9fd3cOXLIghlfiE3pFFGfyqAjU1E1IqGz3aSzZF3ICBlLVvH5fWR8Pi5vWPmondarqe0aa+ZlR0DWhrIng1p1pib86tMWSpfiSBnWN6xcpOlEDgwlxIbmSFW8BUYq0BoPzOkWWVtGCaeIJZ6ZqE3HcZgYuo+Qb2puEsdyoUwrmgbHDxzl0k3WitvoG1YIpF5Le/sKOYnqXCzUhdHnCiEElXKZ4tgYUi5H2HUJU3WElhyHimXh6Dp6pbKiEGoIwahpUjAMsCzijkMbzBUl8YCf+OFVYfjFZI7GUg6rXKI4PspNgbND62b5UhFeEYTOc9zvT5UM9k7MoNeKJl11HkWTnjDhcLoTXvIqLnnXr7N992V1EeIiwrZtSvkcuclhyt4v6emZ5DOf2YPrHuBd75pg7dqVP/+h37iEf/yTf2WqDBVXwpN8BKMNpBpaMAyDSnEK18oiu2UCqkUk8NTEUltARYeKreFJYWR/glAkTSg8L8IUiwUGTh6kJV6hIVIdeOg2jGZ9CF+atesuqbuunkWEEIyfOgWTkxilEk6ptEggBZg0TT7577cz/eBd3N58ds63heRd+EwO/qRh/vU+C05KPkZDKYyN27nstl/lhltfSzKZrP9fPwtUKhXGTvdjlvMI26yG1QZCBGMJWjvWzF2bs5My5QWTMhFNEJDnXaAVy8V2HRAuGlWRNKQuLRRMZbJkym9l4wKbyx0PdRFNbuXayxI8ejCB6m/k0q2NFCpgTiZojCwt1h4ahzUdED6PqEvdgpwuY7pBhJrAF2oimmieK9izGkqlEtNTU8iKQlNT0zNeqK7O8xfbtslls8z09TF44ACF/n78uRwh0yRu2zR7Hm1UJ+Kzrstpw2BG1ynpOqP5PJVsFn+hQEzXabRtNgtB9zLf9TkZbuiAzefQ2z86BX/XWJ0QH3NgzIUsMjlJo6wFMEMRSDYQausk2bWGju5uGtLVe7InK5hyNQyz6IGmSMT8EkN5ncti3pID9YoDR+wAu7suXJ44V1Rdao6oipgZW6Bo4Jc9hAeO65GpWGxJLb+Nkg2DRWgMVkdjuYqF43oENJmWmA9/zaD1XLAaYdR2YdTM0d02P/SbzkNYjjOVrdDcPLpoMmjfsSaaGrtA9iErgZqrM4DmC6GqKoOHP80lC4TW/ScibLvqD3jisTvZ2vplNBW+/9NhyvmjvPXmyblUJbYNPzr4Kd5w2+8/7d8thMCyLIQQHHj8l1zWnV8yBQ/AWE7GDu2ia805OrMXAYZhUCxUnbrRWAxFURg8dIhew1iy9oAD9EsSbYHAXF5QVwhKVIUCyau6lqk9S7CogJO0oEjTrKN7tiiTwvIh9UO2SdmxaVMFMbnav59xYUrIrAkHiZ6hEtqi2gZ11TYmhODw0DCf/+KXse+9g883rNx3/GwOZhSNjvUb2bWul12pyNx7Uw4cRSMRj3NJIoIiwYgDU6jINTdp0xlu0lmKHkwLGVNR0EIaqUiAhF9ZtO7ePGyPVQ/oQN5grGQi1Y5vZyxAR9RP1oaikEHRiAV8NATUC9KmHNVh0wptG0DegqJdLdpmOGAIFRQNn9+PogVwtBCBaJJk8hwbeppMjg/g6ntobZhvp06MJuhcE+aJPYe5auvKwujRAR+J1tfS0tLyjO5nnecFdWH02cS2bUrZLObEBFqlQlQILM+jaNuUDAPXNLEqFTxdx2+aRFyXZmBhH7PgeYwaBrphoDoODY5DC4uL4ljAiGkypeuYhoHrODQ5DnfaBpe4Je4cz/KJtDsnYAoh+PFYjh8OTRLwHARgKD5iTc38xZrFXv6S4/LAZJbx6WqF+Wt8Hs2rnCydcuFBOUJu25W0vPldXPP6N9Wt6S8CHnvs+wQCh8lmT+A4+7n77lN8/OMZzlXc8799eD1/80dfYboCWgDioWrF0pIBpqPgSVGSjR1EIhFs26ZSKaGXpnHNHLJXJqjZhIOrF+oXYntQ0sFwfNgiRDZf4pIuZ8ltTZUUSqKdnt6N5/9FdZ4Wtm0zfugQgXKZUqWCVyqRWiCQ3nvsKP/0j3/FV8LFFd0y9+sw4MA7V2iOJh3YZ0mcUvyMR9N4W3Zz9dvfzXWvuKnejl1gKuUyJw8/ieZWaA4Iov5qOPqkDnlbQY2kSKdSCCOP6lQIqwKJmgvUcvC8xS5Q/3lOmHztx+/gV183Nff6y98NkWrZyWtvWsMD+1S2XdKBYTfS1KBx9KTCxnhqycFNwYBxY/niR2UTCrqM6YURagJ/uIlYsplwOPyUxPdCocATj96DX8nRGiniIjOWiyB8jey+8oa6QFoHqLabU5OTPPmLO1EnJslmMoQKRYKGQdhxSDkOnTCXe88WgmHTZMwwGMjnGZ6aws1kSJTLNJsmvZ7HJcDfK/DWTuYK3C3H707BX5/DibWQsgejDoy7MINCQdEo+0NYkThaugmvpYOujWtY29FCW2OKROTs6+dQSUJoAfxaVVYpGDaZbA5PuMiKQmMqRSoSQkKqjYy8M8Lua0KNVBNn5OpylWq4vSwt7muMmeAPQOocl9yRDKiuTtGwaA16hNRqeOxYRSYS8LE+HVxWmHsmsQWcLMDmc4QSPzbksHVjkcCCgcrxoTht3dcyfPI/2dRdmls+OK7Stu59y7r+Dx24j43Nd6DOCp4u9GffwLoNu3nkzg9z9Y4CuaJDX98JBk89yZteOW/u+On9AV5y2/Q5I3hs28ayLCzTxDTLuHYZ19JxHR08E4SJIixKuk1Qc+lZQUsXAvYONXDZVS9f+SBdpBTyeWZOnaLNNFk492cCw5JEk99PdEG+yDxQqYWOe7EYqcb5RsC2bRzHwbFtPNPEsyyEbYNtI7kuuC6yV0v1UHssDKufLeKEqDqtc4aB4Tn4JGjyazT4lhYEx1xwZIWgIqNIMrIsoSIxmZnhd95+G9/0Z5YtOAzwG5PwT41w0oZ7fAniPevY3tXJpvh85lJbwH5LxgiG2ZZOEKvFdFc8OF1zk0ZDQTqXcZPOrjslJHRFRQloEPBTQmVtwOOR0Twbgw4d/mo75Ao4bUj0mSrXtscI1i4o24NpW6KkBHEDUbRQ1T2LayO7NpLnoOCiimruZp9cfSzFaoXRks2S4fa2qFarN1wFR/EjtBBKKIY/mlxVBN/54Hkep098hzWt8+3F0cEA6zY3ce/dx7jhstKKhYV/uTfFS258ywXLfVrneU1dGH2m0SsVSpOTeNksQdNErgmhRV1HmCaWruPperXCvOPQxLzbUwDTjsOkrmOaJgHHodXzFrmidCE4bZpkKxVs08Rfyy3lGAbjpRLlSgW/ZdHiOKyj2tH9tA8+VotS94Tg4/tOcaVT4M0hMTfbbnjwuZKMHktxS1sDj4xP4ysX2SVb7DqPokmPWDL9HRsI3PR6Ln3n+1m7fv2FOKx1XiCUSgUGBr6BZY1z55338bGPZfjSl8bZvXuUSy9d/nNCwG//xg4++38/z2AOWtPM5atatH2jmi/P9Hz4wy0kU+m5G6pt25RLVbHUs3IolAhqDqHzcDUD9E9CYwwiKwxwjo6HWLvp4q5Y+nymkM1SPHmSoGWRrwmkSdsm5rr8+qc/yevHDvKG0PK3p49OwacaWLEDvBSDNuy3JQbUEBPxJtSdl/PSX30vV19/PcHgcin966xEuVTixJH9pCjTtYTebLlwOCcR9vsIqe6qXKDnQgjQHY+ZikvFcvjFvf/Ch976g7n373oIgvFdXL57M8UKGE47o1MRdm9rwPZg6ESY3oazq7qbDpzMwZZuKJlQqCiYIoSkJfFHmoknmwkGgxfEgVwsFnnkvu/zkg25s/KWFg14uL+Rl77s9Rdt0ZA654+u6+z95d0Ux8e4UTGQhGC0YpEr6EznixQKZQK2QcKyiFrVUPzZLJG3q/DOBshYDseyJW4/MkhwfJiXijxviCz/nZ6AD0/B556BIr/lWQeqVxNQVT96MIJIplAbm3Cb2uhZ08aoEmV9Q5TdjX4CioTpwfGKzLijsrU5hiJJ2AJMx0NWFKRapehqUahqElJZkpGQkOXqQ5FlcoUihVKZeMjP3Y/t5+Cj96NKHjsu3clb33QrwcDZ194DpyusCVq0R86+P42WJbKujy3NZ7ct58KerfLsVd17rjdbcEXGFR4e1aLOgmqcveuBrPrwUNH8KRRVZSozTVcoR3SZJqNowiQd4I2wtjWD6cDAaSjkQSKAYdtctmN8UXt0Ynwn6zdfu+T2HMfh2GOfZMu6+Zx/+0+E2XrlH3D08KP0RP+eoB9+ctc4qujjmm2DhBccms9//8285k1/hmfruG4FXAswUISNIrkosotf9fCroPlW7geeGIPmBMTOcRvfdzrKrqtuWXmlixhd15kaHsYtl6s3UklCCoWQFQXVttFcF9fzMGQZRdPwBYOE43Ei53JGLINt27iuOyegurY9J6DiOEiui+K6VYepEIyZOj2qWFIUtQWc9hR6w4ElJx/+9d+/xhOf/wx/F7OWfP+f85BW4I0L2ruf6RKZdBuBti52dbbSfcbAYciBfvy0NiRYF1k86bHQTdoSCdG4jJsUqsWkJjyJ/Y7ETWlvySJqZRceLfm4oTO+5HZMDzKOjBGIoza0kWjvIhqNzrmmbdvGNg0cQ8e1DDzLQNgWODZTpRLbG5Y+rrP0FyEdgOh5DItsUXWX6q6CrfhAC1cF00iScCTylNP/nDzyQ9a1V+b3bVQjGG9gbLxCQJxmc8/Sqd1GplWmStvZuevqp/S9dV5w1IXRC41t21TyeczpaaRiEZ9tU7ZtCpUKkmliGwaerqNZFmHXpUkIZptNGxizLLK6jldzjLbXCi8BFFyXIdMkr+u4pknQcWj0PEzDYKRUoqzr+EyTZsdhAyxbae8vVfjvLdUB5N8cG2F3aZLrAkv/1325UM0h8o5VGqJO2bA3lEa//KX0vO19XPnym+p5zF7EnDjxc0KhY+Ry49xxx/187GMF8nmXP/3TI/zVXy0fvvDzOzVmTn2cN7zmdYwWoWcV6WbnQuItBU+JEk91nOW8sm2bUqmAMSeWVghpDuHA8oLKkWHYfI4yvpkSmP5LaG2r56B5Lhnr70edmEBxHIq6jlMqse/Rh/nyFz/PZwIF1i/RFH22qPBIKM0GVdCgF+jyTLZpYi606nw5asEhR2bQF2Ym2Urw0iu55q3v4prrrqs79s5BqVhkanyY/OQoOxuqUkTecKnYAlWBVFBFkarhWdMG9JynUdcWUDYdioaLYbvgeaiyS1AWRH1VdynA4OgEavyjtNcip2wb7nuyl2R6K7u2Rrhvb5hNGxrxBZqJRxSGJiQavVStKv08U2U4rSdp695IItn4jIrl9939Qy7vGCSwzHmbLcPJ4jYuv+qlz9g+1Hnh4boujz30IPqJw1yvOWdUF/a4c3ia1wYdhICc5TJcMigUDR4vlHl/0iNUW3/GdPjy4X6OHzzA5+PLF7O4oww/NyReFRI0ytCmQNOznKKxUnOgjnmQRSWv+bHDEdx4nEy4ARGNIycTJFMJwrE4iWSKy3taaFxmdvTJk4P86J77abJzFGZmuO/IKd7bbHJruhom/GBe5kulRq567W3cdOP1eLWqTpYroQuHnenlh077Z2R8oQh+Ta3mX5UVUFQkRUFWfEiKOveQVR+S4kPRVFTVV83VWqvyPDtpq+sVJKmPSqVMaoHja3JSI5mMYZppIpGq/cK2bQ4+cQ/rEpwljhZMGCon2LBlZzVdw9iPOH1asLEBkguauSO5DJvXzYcjnx5XaF33/vNyjT52dCctTa0MnPgqN15RxLQEj+49xqmTB3nPG+f7kQeOSaRa/oH21pUyX66OvglIRVi2Uv0s+07H2HXVzQCMj49z4sh+BIL1m7bT2noOu+1Fhud5i9Kh2baNbdvIsjzntnu2zAOO4+C6LoVclsLoCO3YBBa0bSUBw47Mmkig6ppchr/7xre4/3N/y+9pRS6vXf59NnzaihIxSvxFw9nXruHBN02Nzp4eiolGruxqo+WMG7Mu4ElLgUiUHQ1xgmfkACl7cNqV0ZWqm7QrHDyrin2/BYShZ4V5k0Ol/5+98w5v4zrz9TsY9EaABHsRm0T13mzZshS32HF3nMQpTk822U3fTbbmJtm0m+ze9E3ZFCdOL26yY7lFsmVLsnonJZIixd7RMQNMu3+AJgkRpGRbdmJr3ufhY8+Zg5kDiBie8zvf9/0sFAb8lHvOoza7BmOGjYwzgL24nGBFDW53/osP9PfCYAtlM5TkUww4MQZ1fnBZX1zm3lTU8QhTSbNMRpi6fDh8QTxe/zl1ho7WHdSV9k8cnzpjJS37QLQzGh7G5xphyVxtIgBHMeB0l52ReDWXbLjGLPN38WAKoxcCWZZJDA+jj41BKkVGlonLMhZZRk2n0SUJq6LgUdUcIVQyDHrH+wqKQqGqUk42NWdE0+iTJOKSBJkMHlWlzDBIyTJdySTJVAp7Ok3JuAj6QvaTtwEUGtSQ5nP7W7mnaGYTHMOADw7Dj2bY3Z8wTWpcSuDGN7P+zW+n1KzDYQJEo2MMDT1EWVkUWR7gZz/bzac/HQHg61/vYfHiEa67bvof1cFB+KePz+d7X/oR/Uk7gs2O26Hitmt4HedfRzSjZiOl0qoDm6cEf0Eob7SUoigk4hHkxCi6EsGKhNuu4hlPS2nphfnn0DsTaRhTaqmpMyOi/9ooikJ/czOBVIq0oiDLMn98/FEe+80vWJyO8A6nQtACxxW4O+Ni48ImFixezCGrl9r5C2lw29m+/xC9+3fjH+qmVIozhwzL7eQ1qzvneAw4loFmzUqvw0u4pJKC5etZefOtXLpx00Vr3iVJEpGxMeTIKMgJBDWDaGjImo7XCRZdoSsiU2DV8NkMZE1gNGOhwGWjschFSwQWzFD/TtZ04rKOrChkxgVQu0XHbTXw2eB8jKB///T7eNMb4hPHP7/fR2Hpcm68uppDzQJLFs/hcIuTlYuz6sKJZjsLi3Otavb321iy/g0vy+agYRgkEgmi4RGiYz2M9Z/g8gXqrK956mQhl11lpoSZTOfk8eN07d/NSmSe9/yQdbh/IMbrhQSBs35lOpMZWvsHudo5KXrd1zPKnuaTFA9180nf9Np8pxX4T0L86JarsFosDMkZjofjnB6LEI1EUZJxRFnCoaTxaAp+QyMoaIT+ygLqgA4jWEk4XWi+AhSfn2HDhuTxMIqIX43xyVqD0VSG/3nuNN+Ym8m70frlgQIueesH2bwu6xx0PAG1ISY2ZPKOQYX2CMwNZD0DND0bdasbWbHAQJhI+n++WqP+fOK/MN4miBiCABYRVVMADavdAIuAYBHGr+EAbNgchVisVgSLlZScxO3pZXRUQJEF3FYAK2nDgdMbpHpOPTabDUEQ2PPMVlaVSdOi1fujGYI10ZwNm30tFRQFS0AbT10nG9FptajYRJ3ekRMsmTf5LDty0kpT1Xx6B8cIFe7E74Xtu0YpcHUS8pykeor++NM/zeU97/jiC/hXzk8iDWcGYVFNbvtwVKWtR0LVdESLBVxzmDt/GVv+8AOKXf0srowCcKLXz0CqnBtu/4C5JvorI8syw/29qIkkoINFxOkvQE4mqSJ/iSwA2YCIrxCP38+v/uc7tDy9DcEwKFu4hHd/+l9wOhz84cPvZNOzD+Q1Gu5S4HGLn1UNc+hyB7m8uoxgHgfGUwoMWF3UFwWpcuefK0xEkzoclHs8hBxWnlHg0tDMQR1pHSRNZ08mwMISL4Uo49/h8yOhQhgbqrsQR0kVheWVE5v7hmFw8thhSowRXIJG51gaOZP9zuoIaA4vC1esx+F0kkolSMciKFIM0kmsehqnoOK2vXTBVJsQTAUU0YFh80wIpm6Pb2LN19VxkJqi1onXdfZZqHVn52spBfae7scijM/3BEikRBYtuYbqOXWmp8DFhSmMvhhUVSUVjyMPD6OEw2RSKeRUCksmk62NIkmIioJTVSk1jInIzbCmMTBeH9SmqpRoGsXAgKIwIEkkZRlLJoN/3EApOi6CJlIpbFNE0PNdRic0jdOyTK8kEU2liMkyFkUhqChU6joJoLsI3n0OM7jPjcJHA1A4PjE+nIHjhdVw2TUsePv7WLZmrbmbYjKNjo5HkeUzWK0x5s4N84tftLBpUyc1Ndk/ql/7Wg/hcJR3vjPD/PkQDsNPfmLl4L4mPvWx/4fHV4QvEKKkrAKbzYamaUTDYyRjfdgEGY/TmBAvz4dUBpJpC6rgw+ktxustmHH3OpPJkIhFSKdGGB7sZ2ntzEZl8HzE6ALKK84RWmryihGLRomeOkVI09g3NMAqJP7nLzvYueMZ0qkkxSUlrGiah2SzU1ZWwc2L59GJjRVnBQVJmk7bcJjHdz3H8KE9FIwMUJZJUI/Ccgf4X8SjT9LhUAZOGTb6XH4SpTUUrVjD4iuvYfn6DQSLii5IZEUqlSI8OgpAYSj0iqb3K4pCOp1GTiVIRyMoySgWRUbUFOwYOERw5qlh1SND2sggSxILg/q0FLD+lMBIxo7N6abSo5FIayiKiqbpYGg4RQOPaOCxv7i0+uf51aPf521v3D5x/OftAu7ASq7Y0ISqw8kzxfh9HoqLy3E5BKJJyAwFCLht2ETojgiMUMyKNZte/CDILuoikTBSbIB0cgjUCCJJ3NY0Ba6siNwbBikNjedYf+/vdDN/zZsuWjHeZHYkSaLl8CESQwNgGIguN3MWLWHnlvu5Kt434fb+PD9oH+IWMUXZlPbtg1HuPtyC3N/LHfY0y+0GMR1+rnoYKizlzZs3EhR0PLqO36JTZIHADCZDugHhjEpXQqY9EqM/GiMVj2GkUljTEk41g1dX8BkafjSKLVAuct517y8UKT1bq/ALcfjeKvDOcH/DgHcNzuH7//c/cTsdHEzAivPQzA6OwIrxIMi0anBqKMVYUsEi6BiGgM1mZX6Zm6Dz5d3w0MYFWU3PFWmjGZBEaJohgGJ61KhAmacI+wyW1i1dozTU9TA0AgePgJEGwbCiY0V0dfGGTSl0Ax7f3kpvVzPvuX2yjunAMPRF/w8rly7Me+2Mli1xImdA1S2ouohh2NAEG1gcCBYnFqsL0eamu7uTpZVh3HbIqAa7jsUIelTmVeg4bVkDzr2tAgcOHuGD18RxnfUnW1bgF8+Ucevb/5niKfU0Tf42SCWTjHZ3UZZHHM0YMCA6Ka+tPedc7OSRw+x87228eew07jzzwadlgaFgKfMqy+lyBdhcXYrHOr1jRINjuhWPr4DFhb4Z3eSTOpxRLQxabFSVuKgJunNS6U+GZZpHkrjQsFtgICPgLKlk/TU3oCYiqMO92KUoRVYN5wuYv8ZUiOBA8xbiLKuhsKSM1hPHSAydYWFAxT+u6So69KesDFqKWL720ryfn6IoSKkUciKMkoy+vIKpxUE4nWZR09jE+f5hgXJbYOK4ZbCX+Y3JyePuEuYvveOlDcLk1cjFLYzqus5gfz+nT5xAS6WyLngOB/NWr572RyydTpMYGUEeGiIViaAkk1gVBdJpNEmCKUKom+ykYVBRGBmPGnWpKiW6TiyTYTiVQk6nsSoKAVWlChhJpzmTSJCQJKyyTKmqMheYpVRT1plZVTktSQynUlnzkXQah6IQ0DSqDYM6Zk6pfwYYKIE3nqPUy9fCEPK6EZevp3TcNMn/IuvDmFwcjI4O4HQ+zdjYMCMjYVaskGhrk/jJT3bzpS+lJ9xER0dVfvnLQc6ckbFarSQSl/GlL/0Mp9OJzWbDap15hSNJEiNDPaBGcdpUvE6mTUxnQjOyxieyYkOwBXB5i3F7vHkF/o72Fort3WaN0VchhmEw0NnJmbY2KuUI1VYDRYeBtIKqGwTsIsHxEORuJWumUXke/4SabnCsf4hHn36W6NH9BCNDlCspGgWV5Q5wvIhJXUTLiqVtgoNBd4BMVS2li1fQuH4D81atJlQxvTTETCSTSQ7s3MFQdweipuBxOnH6AzgLi1m8ev0FEUifN7FIp5JkknF0OYkhpxCUNFZdwWHJOsPnq301G32yQetIBIcaR1E1wEDHQk3QSU2hA1GAlkh24lzhyaZpXQhSKiQUARk7ms1Ne+8AK6vuojCQPZ9MwYFTcymtWMy8ehdP77OzcX0Fh0568LgL6OkFQQGrKBJPWxDdHlatv5qionMXU8yW+EgQjwwiJwbR5TEsRhyHJYXPpeFzz75Q6A9DXIJ5FbPfZ2+Hh8Xr32zWvzV5QUiSxDNbtyL3dVKckTAQGHJ48NfUcvrEceYMdrLBSOASslFWz+Fmt9WPI1RCor+PijlzuP4tb53m6ptOp+nt7aW3s4NERyvaUD+WaAR7OoVLy+AzNIIWg5AIrhl+/zUDRtIqQ3KGoWSK3mickXiSTCIbfWpTZJxqBo+u4jE0fExGoF5IAVXW4V9k+May2ft9/TQs9oLLKhDWRZKCHdnuRnH6sPgDuApD+EvLCJZXECoJUVwYoCvjZXWZhWRGZ2dHlOWFKsVTvsIpFQ6OiFSHPNQEzq+GsJRW2H6ojYGBQayo6FiwunxcsbKJqpCf7qEwDz7xLFJsNOsM7vRy9WXraKgsxuW05/wdOhGB2hKYIdiNgViGgqoorinnT7a5aKrMv8LRDXjsuWPYJI3Lashxtm8dyhCY10dxEA4cjVPg6iAycoxViyf7/Oy+Iq647lcIohPB4sBidSPaXdjsXuwOFw6HA7vdfs7IeVmWObR/B/NKwhw+FWVlfYaCsx6dv3r4JDevGp1xfphMw33HV/H293wSgMHBQX76P1+mv+M5RIuGbi3i9rf/E5df8TozMu2vQCqRYHSwP/uMMHQMIG6xotmcFFdWnne2h2EYPHb3j1H+8+PcIKamnVcN+L1sZV5tLfgLGHIHuLKqZFp6PGSfaccVgajDw8JQgKI8UaZT6VFhxGLF4nEyqBkEdJmVfi1nYziqwJ/HbMxbsoz6dZsIBALE43EivWfQxvpxyjGKrPqMZkv56JehRxNYXWLkrWEaSQt0idUsXbP+vK+pKAqSJCHHwyipKMhJRF3GIah4X4JgGpZUvLXxiYzDcBy8meDEcctgF/On1DZu6ZnD/CU3vLibmbyauXiFUUVROLRzJ6nhYeyJBJlMBothoAkCqt2OraSE+cuXo0ajxAYG0JNJ7JkMZDLosoyeyeDUNEp0HQ+TTvBRWcZIp3GOi6ZRWUaRZeyKQqGmUQUMptOcSSaJp1JYZZni8UjQfOXS0rpOZzpNlyQRTiaR02ks6TQeVSWkadQClTCro9pMDAA/8MHnzlG/8UP2Wr518KRZK9TkvOnoeBirdYzy8hjHjg3hcMTZu3eUhoYoTz89wDvfqVAxvog3DNi3T+SBBxr49Kd/+KJEd0VRCIdHkONDWC0ZnFYNnxNs57nwUTRIyAKK4cLiCOLxTUbXybJMe8t+5lWk8rvSxwQSRhV1jfNf8LhNXhmOHznM2Ol21tvzp00pBuzJWHA7nRQJOpqugQ6CoSEaBjYMHAK4hZmFPlXTONrVx9andiA1H6YoOkyFKtMkaix6kdGLgyocVAQ6LU6GvUGobqR80SLK5s6nvLYBb00tJRUVeL3eCVE+Go3ys29+ja5TzbQf2pt13BUdzF+9ntdt3oy3pJI1m6/G651t2y1bezCdTiMnk2RScXQpiZFOgZKeSHu3CVk3eFXPLgw0XZ9whzV0yIqaevb/jewxRvY1Aoz/ZN2eLYBFMDgVkUFPsbJYm0gx1QzojAl0STYuqy/AMOBEGJa/wFJyip5Nm0pqFjIWJ4bdg+gOYPeH8BYEcbvdE5sjhmFw/w8D3HpVbOL1v3iggFDZCq6/soKufggWVdM7aEWMl9NYRM7ioD8u0Bwr5/KrbsBms2EYBslkkmhkDCnehyqNghrFLiRx2zME3MxYH/R83teuZti4aOY+hgHbTxaz6do7zAW4yYtCURQikQiCIBAMBieEpY62NnY/+mfUVAqL08Haq6+jsanpgvyeSZJEX28vAx0dxDvb0Ib6EGNhHLKEV1fwCxqFQjajaaZnrKIbDKVVhuQ0MSlDVJIZSSSIJlPoqSRiWsKhpnGqCnZdxaXnCqjF4rkzU/pU+KUIn543e7/7ByFohSuKZu8HWXf6oTQMZiCsCkR0kQQ2ZNGBYndhuH1YfAHcxSECZWWEbSVctaKWupICLBYLAxGZw52DqKqKgUBlyM/iqkKScobfPLqLG8pjVE9ZeCQVeKjHyYgMluE23jwnQaET9nTF+flzA8jpDB6HlYy9gNLaeXz4XXdSWhTg6Fh2U2Y2/ebsqNHuQYESdxGOs6JG0xqMRBT27TnFzQvzlwbZ1jXA5iuyIsaWR08THWvl7TeOTpyX0/CX9u9x/U0fPveHPAuGYZBKpTh4YA9+/SQLKhWGwjJjkSTJRJKUlOR0b4z3XT370vfXu4q55Z1fZse2R9jy80/yqeu6qBvfI5Az8LudPvaPbeb/ff9PswYDmLx8pJJJ5FRW0HT7fC+6HrwkSfz+k3/HmkfuYaFt+u/FoAoPGR5uaKrjlMVJxF/IdRUh8gSQAjCgwgnDTnkwQFOBe9bnULcKnVa4fIZni6TBoxEHV9YV0SsW4J63ioqGuVitVnRdJxqNEO87gzY2gDuToNBqzBi1CnA0AQ0hZk3PPxJzM3ftlS95M3ZSMI2gpqIYcmJSMLUy6zgBJNVAKYrgH0+WkVXIDPvxu7J/w06OdNJUN1mv+NCpUsqqVuBwF+bMr01e81y8wujh3buJdHWRCYdZoCj0JBIcHRkhHo3iMAwyVive6mo2zpmDRdNQMxmc42ZHXiCh6/TLMglZJiPLZCQJSyqVFUwVhRJdpxwYSKfpHBdBRVkmNC6CPi/9GIbB2HjK+0AymTUMSaexZTIUqCrlhkE9UDDjO3lxaEAX8G92+Fn1zBFOQyp884q38uW7f3WBR2DyWmVoqItAYDft7VHmzs3Q2trDs8/28d73Zo0dRkZUHnxwhJERGVE0kGULsdgcvvCFn14Qx+RsikaCaHgQtCQ2i4rbbuBynf9uo6xAIi2iW7zYnEUIFhvdnc2U+VMU+bJOjJICfaMCGc2K01OA3V1IRUWNKTr8DdLR2kq4p5NMLEajqBGaEigyokG7JuLxeDEcTkKiga5nBTwLOhbDwAYIhoGh66i6TkbT0DQd3dBB1xENAxEDu5AtneK0ZE3rZEXhcFsHf3nqaTKtJwglwlRpMgutel4jqPOhU4EjikCX1U04UIx9TiOVc5sIVVVRWFTEw3v3snfr/awRw/x9pUqJA5Iq/Kxf5N64n3d//NPUNDZRU12FoSpomTSGkgZNRdBUBMNAREMAxCmipSAYiIAoZutgi4BoyYoRLzXtaeLfQlZpDse4vDy7gFb0rCDxvOAxIkNbwsn6Wl9OeunZpFWIKQIyVlTRBU4/Vm8Qlz+Ez+8/7+fML75/G3ddfd/E8X2PW/AVruKqK7K1hHcdKeCSlUGOH/CzqGy60DyaggODLmrLBZxWmQKXfk6X4xdCXIaYZCGlOujsN1hZL1M0g97dNWIl6VrHgkXLL9wATEz+ioTHRulpa8GejJCJhwkPDjM6HIZYFFdGxqOl8esagfGUfe8si2dZMxhKKwxLGWKyjJxRkOU0UTmFlJIxpCS2TBqbmkZQFKx61gG7WNAJWQz8AvzQgK8tnvkeAD/ogg1BWPICjePOhW7ASAaGMjCqQESzENMtpLAiCTbSooOMzUnK5kO2O5lb7KAy6KY46MLjsuFzivgcIm2jMsc7BnjfeL3iX+8forNngE8uVXPqh/Yl4F9PlPPpz/wzzsIy3D4om/KedB0yqkZG0UmrOgPhNI7COGgag4MGsbCGoYIoWLBZrXicDkR0LIZGx3CcqxbKBGfQpkYTKqniHqrLYP9RmZDvNEePHuGGzZMlj7Zs83DNXaM5z3pN05BlGUmSSMspMnIUNZ1AVxMYqgS6TFpOEItGSUsRUOOISKClCXhUAh6N0sBkZGzvKLT0wJXniBJ+qtkN5W9jy4/eztff3ps3um5/m5WH+9/NZ7/8o9kvZvKqoLOtlb+8543c3nOEgjyByXvT0Oor4bb6SnbodsIFIW4vLUCc4RmVMeCAamXU4WVdyEcoT6H0hyS4uhwcswRC74iIzC8PUewSUQ3oVmykS+upWrY+Z7NcVVWi4THi/WcgMoxHTRKwGjlzvQMJWHmOUiBjMkRDy6ib2zR7xxeJoijIkoT0vGCaTiBqWcHUY50s1SRrEHGHKZsiGg90eSgbz/9vj7TTUD25cXO6q5j6iiCKAZIMsmJFMewgerA5C3C6C3G53aZg+trj4hRGJUli3xNPkOrvpyoW41g4zGB/P5syGRYbBi2SxPdaWznT04NTVVGtVuoWLuSOq65CNQyS8TjOVArruHN8ma5TBvSMi6CxKSLoXMBjGHRnMpyRJEZTKVKSBOk0rvEo0jnAHLKLzQtJAmgH+pxOokVFZKqrsTY14V26lLJ166ibN4+RgQG+8+Yb+VbmzLTFbVyHj/ia+OrW7dNSoExM8mEYBmfObKGqSqavbwRRzHDwYCvLlkWorp75dTt2uCku/jjz588S8vQi0HUdSUoRjw6jpGOIZLCJOi6bMWtq/NkkZEgpNvpHMlgFGVEAqwjlIQee8SI9YwmBpFFCdU3dBX0PJi8dSZI4c+wwmUQCUZaQFQUL2ZInfrsNw+HE4XQiWG2UWvNvFCmGQVozyGhZcVQz9BwBVTSyIiJ6VjDVVA1F09EMDbSsvYVoGKRliebmZg7vfBY6TlGSilKtp1liN6h6EX8EdANOKnBcFem0eXgkleFrc2VW5dlNG0zDnW0B/vULX6bSY51lBmCc46/52Sdn7nz2PfLd8/m205LGJeUGh/vijCXSOMVsNKqKyMJyL3NDDrb3Qpk7aywyGSE2/j+CABYBC8LE4nP2WU7uuJ+PZH3+/4+cOsXrNn8D97iYORqGk73zmVO7mMoyO7sOiVyyupqjp0QWuUvJV2p7RyesX3zuiIaZSKsQTUEybSdjuDGsfkRnCLevDH8ghNfrRRAEFEXhmb88xIKyAcoKJgUCw4DOERt9qRou3XituXFj8prCMAzCoyNEw2EsFoFgcem0rJN0Os3Y2BhjfT0c+ctjFMaGsMgytoyC21DxGRqFlmzU6UybPPdLsK5UR8pkGE0oxBNp9g3G2VyUZplXZyCl8q/b2/lZkzTrd/2uw/DNBVD4V07ASqpZEXV4PBo1qVtIIdKriJQX2rC5bER1gZahMb55Wf4a6ykF3r6nnA9/8P3Yyaa6uqzgtApYhWwdadt4ORWbeP7PwId64IZziI3bOodQhRSRXhDsZ3B6znDVuh6cU/a8vvmL1WxYfwOaLqAbAhaLiN1mQdMMMpkMuiqBLoEmYxPTeBwqIZ9ByH9+Jp9DUdjfCtetnr3fo4e93PvkGb78hkcpmiUh6hP31POFHx7C57vAqrnJX42n/vR7Rv/lA9xmRKed0w24VxIpralhXUmQR/ESC1Vwo8+Cf5bfvw5VoNldhM0fYLFVpXx83vhwGt5wjnI6Q2k4jY/15bm/Y2EFBpwh/AvWUjGndto8QVEUIqMjJPrPYImN4NMlzqQNVpwj4zSegZa4k9rFawiVlr1i8w9l3Hg1NjaELnchZHQU2xh1FZNzvu4zTqrHa2N0JduoKZt8znX3VVBdMnNWlaJlfSskxYqGA0QvNkcAlzc4UQrO5FXJxSmMtjY303nwIL6hIeLhMJ09PbxZlvEDdw8McN++fdyRSHCHnvVpBDgCfM7p5AMbNnBtaSk9mQydySTRZBIxncYly4iyTGLc6Cgty1gzGXyqSqmuUw+8HKW3e4FOQWDI7ydZWopeW4tjwQKCq1dTvXIltXV15wxhP3rgAN/6yAdZPdTO5kwY1YBHXMW0Vc3n3+7+FdWzKVomJlPo62uluPggQ0MZSkqitLTEOXiwlbvukmd9nSzD/fdfylve8vcv6/hkWSIeGUHNxNC1DKKgYrNoeFxMc1M9m4ScjdAqD8zcp2NIpHzOkhedhmPy8nHy6BECmRSZTIZ4RsVCdhIkWERKnHYGseEKFGDVdXRVxaKpoOtYDB0RYzyS0sAqgI3sz9neEYYBClkBVXleQB1PL8fQsWAgGtlrabqOoWXT9ofDEQ4dPEjn7mdw9nZQKsWoIcMKOxMO0edDlwI/t8B/zFLV4Q+DAgeqLmPjkiZ0UUQXrAg2O4LVht1ux+2w47Xb8Dqt2EURm2jBbhGwiQI2S/bnpZgazcaTYZ2B4SGs0giZTDatqdDrZEOtn9aEDdnior7ET0rNujS/3Oi6ztbWT3L9psmUzl89XERx6XKu2VRKQoKxeDnlpQ46jwaYW+Kedo3WEfAEoWIWk0PVgHgK4rJIWnOiCX4sjiAOTym+QCk+v3/WifbAwABHD+wgnU6QiKdwOB2UBbPKi6y7qKiZz7z5i01R1OSiR5Zldj3+COXpERrsGWyWbGT6vrBOa3cvy6wSkpRBSaugqNhUHZeh0ZoxWFUOdVO+4mnV4P/uOs1/zFEQBNjVF2fbiQ7+tTZ/Cvjd/SLHnDXMKw2QlGQ0WUJQZCxaGrum4DBUXIKGGw2/qBO0QokDSuzTTepeCf7jNPz9Biibxavtu0egPVNARVEBht2Dx+OhwOfB5nBisTlwOhz4XHYc1mweQnbrKeu2JQgCgmDBIlqwWiyIogWraOFQWGTDPAtOuwWH3YLDKuC0WXLEym3HoqCG2VwPQzGFSGkbz+09xjtuVib67DkiMBx+B36PHQEFh6jjc2uU+KHwAmiPhgE/fQLee3VWoO8fljjdE2VoeIRkIgxqApc1RaFH4XdPG/zwI7Nfb/tRCyNz7uaNb37HSx+cyd8MmUyGP/77PzL/999jpW36JkNYg3s1F1fPq6fI7eAJZzGp2iZWy2PMtc5s/JrQ4bC9gFjDYgoEjcHRAW49hzA6koa9kpPr6gvzj1WHLs2OUbWQ6iWrZlzLKIrC/h2Psz6YyHv+efoSWWGo2AUDGQdCyTzK5jS+YsLh0NBxSkqybvOnjvYxb87ks7nzjI3aAi+qZjCqt1I6/pEoOkTGaigOvPB1XEaDpAxpzYqGC8HqxeYM4vIU5JRqMvmb5bwmya+5gieqLJOWJFKxGAuTSURFwQ88HYvx5KFDfCUW42w/w6XAH2WZNz31FPuLiihPp7GOGx0FNY2ScxgdvVjSQAfQbbMRLixErqjAMncuniVLKF67lrpFi7ikvPwlfdmWrFzJj5/dy/49e9j25ONYrCI33nQrTU0vT+i7yWsTVVXRtGPYbBCLSVRWgqKk86YNnY3DAaqaOXfHl4jT6cJZlhX6s87zY6jpCBEpA7qCRdCwWXW8jukRA6NxqMg/l5igLKjR33uGugbzu/O3Rv38BbQdP4bTJlDjtOMBVCCsw6Ah4gmFqK6dHu37/M5zWpJQ5SSZtIKhKuiaBrqGRdfB0BFhPCoURIuAU7RkBdQ8v/+GARkMMqpOWtcp9xVQVlWNfsONYOgIuk7f4BB/2vkMvXuexTvYTVk6SR0Kyx0zp4T+MgXvPkfQ9W0lBlv27UDte4YxzUocG7LoRHe6cXgL8BUEKS/0U1LgwW61oWAhY1hQyEZuqoIFwyKiWyxgsYFoRbRacdqsOKwWbKKYjdwUJquIZhfBFiwWAdEiYMGCKAqIFguixZIVXEULh0914s0MUkyMQqvBvBIXNrvMg4cSzKsIYHMaDMedOJyvTLiVxWJhqL8BODnRZhOiaHocKMXrggMnItRUlJKwJYDpwqhFyP57Q9aII5oSkFQHCh6wBrC5inEXlBEoKyT4AutwKYrCYw/9joC1iw21Sdz2bCTDsW4n7SMhrrruTgKBwIt+/yYmrzWcTiebbriFvp4e9jQfRVczYLNRt3kJtJ9EP7Wb9RXTN3LDURvbe/qoc086FzusAq9vLOW7HQP8XaXKJRU+euIVfPxUPx+tUqgffxwMpuE7fQ7Eino+dsWKbBSlkI2gtAmTqa8ZzSCuaMQzOvGMRkxKszeeYiCaIpVKokopyEhY1DQOPYPLUPEKGj6LRsBqUGLPiqiBC6Q5xJhdFAV481z4wdEo/1SXjYgbkaAvDMMSRBWRqC7Sr1uRsaGITjSrC6vTS5HfTUmBB5/HicfloNhrI+S0YhMFlpaDHsvWG5W1bHTrmJ49zmjZmuBHh+Cjm7NjKPHbeO5QAQsXzGFwpI3S8RIrbofBj+/+LU57MTddNYc3XzsHy7mKxc6CnNE53C7RcjpCNDyGoUYQ9Rh/+KNEWSBDXSlcVg6UT3/tlufOff0ir057eOhFj8/kbxO73c5bv/Zt+j/2GX7ynjdyU+tuiqesL4IivFeUOHrqONtdhbxpro7UPMxTRXUcX3UZ5Z0nWKYncZ71q+u1wAY1Cief5YRqpccVoL/ASblnZtmmS4ZGm8yuMyPMCRVQ4cl9WNgt0GjJwOAhhnoO0+Etp2jxOkrKcxVXm81GcWUdI2PHCDlnjonrT8HSUPZZV+NKQ/woA3uPI3krKW1YittzjgfMS0CWZbze+MSxZuR+gIaQHbesaLimDEOSIa4UoMc0nDYVt+P8o93tItg9kF1dxMd/+knHITIMac2OLjix2PxYXQE8ngJcLtdL2rQ2DANFURAEwYxUfYV4zQmjdq8XVdPwaBr743Fu1rJ1JR4ZGKA6Hp8mij6PBfi6qvKbwUHecwHHM0JW/BzweIiXlKDW1GCbP5+CFSuoWLOG+sZG5r8CLvCr1q5l1dq1L/t9TF6b9PefpKJCQdfBbs9w4ECKtrYMw8MWZBlmC6I8c0agrKz+lRss2clKYagMKENRFFKJKOlUGJU0EUnFMFQENJw2A48jm/ZyrvQqlw1kafYdVJO/DjabjcZFixkZGqJneAhDU8EiYHW5qKiqntH0y2azYbPZ8qa3GYaBqqqkx+tMq3IKVVGybbqKpmdrkAq6jmDoCEZWPM1GnwrYrCJ+ROx55kQVBT5WzW0g8867SKs6KUWhteMMP9mxjfC+3RSM9lOupGgQVJY6sgvtIQMqz7HJLQpQZIcbiw1AGf9JAWNAD2oE+gahR4Ze1UJYE4ljQ7I40OwuBJcPn89HRaGXMp+HApeDgNOKw2pFNrKLWBkBWRdQDQuaIGBYRBAsiKKIVRSx2aw4rSJOm4jPLuK0iuzsjzFw6igkRzgZGwbD4ElvAZ5gCW9bU8bxUagvF9nfY2FeiZsO3YbXYcXntOA8O3T3AlJXuBFFOcnz881LV6p0jSQJx1SCfiuFfglFhfmNKt2taaoLc+uX9sdFgoEF6JZKCspLKPN6L1jUwBOP/JFVFScpC0xGldhEWFErM7e8h61//jW3vvmD53RfNjG5mBAEgcrqairPyoaqqqnhsNfHfYf2UqNF8BsyEcFJjxikccM6Rg8foq3nGRqdk1FHa8u9+OyV/NepYQRDp6GsgaqCBv6xc5CgbsXv8+Od28B7/vez1NbWIkkS0WiUgUiERHiEZGQUORpBS0bRpQRCWkIQZSx2FatHJRDSKMLAgoExXrplwsTO0LPmdQYYuk6bJPN0NEUkniCdiGCkEojpFDZNxqll8KDitWgERY0iGxNC6kyL/vPREO0WUKcEtYVc2Z8s2vjP85veWfFUN2AwBX09MCILDKgWDulWUrqVNHYU0Ylhc2FzeQkVeCgp8OJz2wm6HZR7rSQ0KwvOEh83zynlTy0xtp5x8843pvj8V2BxAXzzqgx2sZenWvt519aj3PWmFVy1oWrG9xNN6BxsTdLWHSEeHcWixnBb4xS6JcqDGRrKYN3Kc38uZyOfx77/yX43cy6faQVq8mqnvLKS9z66i92PPcKTH7+LOzIjOdk3S+ywRBtjy4EIjooqbhYMhh7tYPecJSg3vQN97w4ahjqpzKPKLLSqLFRGGD0JO7BRUFHAohLvRM3SeEbnmd4Yx8IZyhywOOTFGsuwPRagIeCi2jX9y15iMyhJ9yHtvY9Tuhuxbik1C5dOiG819Y3sH+jGY43gyjOm9ggUOqc/X8pcOmjdxI5202EJ4qtdQlFx6QXPaInFzlBSkv3/sTEFpyt3IOJ4NO5IXKVySu3RlAxzmjYgiuK4Z0WKseQYajqa9a0Q0jhtGi7n+dfXd1jB4YXsszBDdtupBykCo4OgqHZ0ixuL3YfdWYjHl62FP9tnkk6n6elqJyNFsIoaug46TorL5hAqLjnPT8nkxfCaS6VXFIX7776bqu5u2vr7eUcqRVTT+MTOnXysu5tzlLbhH4DvvoD7qWSNjs6IIqOBAFJ5OdTX41q8mKI1a5izdCnV1dWm0m/yqkVRFIaGtlBZqXLwYIT29l5WrVKprYXTp9OcPj3I1VfPnBJyzz0l3H77l3C7p0dcvdIoikJaTpFKjCHoKawWHUNXGRpL01TJrBGwigFtfVYWLD5H0SmTi4JsFLWGkkmjSCkUOQ1KJmt0NB5paugGhq4hGAaCrpP9e5sVUa0YiALYyf6cvVCV0mmOnTzFricfI3b4AHu6z/CT5RrFs3gLGQZ8tBm+8xLWX2l9XDiVIaxZiBlWklhJi3ZUqwvB4cbp8VLsc+N1OXHYbbjsVnxOB0VOK4VOKw6rQEaDhAYjaZ3P7TyJdegkl4TS3FirYbPAM/0WHu6x4wjN4ZPXL+LJkQIqysu5aXwPRdKyNawSioWUYSWNDcWSjUrC4UVw+LB5CnB7vLhdTiyiBYHnJ8fCeEDreFSrIEz5bk+2qapKx+5FvG79pBjyu60llFSsYPOlRegGHD4VwuvxcvS4SKXPzbxyN0GPSFqD50aq2Xj1TS/+w85Da+tJtj/6e7REBx6HhqKJ1Fa4uWxZAfYpC5SWPhtGye0sWLTkgt7fxOS1jGEY9Pb2kkgksptAFRUIgoCmafz2R9+jcOAElzvjeK1Zke9YysazlHLVne/B5nBQUFBAMDhL7YwXMA5ZlkkkEqQSMc6cOII22EZQyGBoOugaom4gomPHwGUx6JGhuAgaptSYVnVQxsu7pBSDBw8P8K55aYZjaYZiEmPhBNGxBPFogvbeMLV2GYeu8mBfhrvfQF7R43ke6cxGdd7a8JLf7jQULRtx1p+E0bRAQhVJ6iKSYUPGjmZzgcOD2+/B43XTHpG4Y1GSL205yf/exDSjO8OAf3/cyepNa3F4vJzpjSIlR7HqMby2BEUeiYqgQkP5hUm1n8oXfg13XAYLambu83d3L+Z7vz5kbmRdBGiaxr1f+RwVP/4qG2zTS28kdPhDxsFl8+qY63PTpcKhRZey6H0fpf+ZbXiO7GaJkJ5Wzul5FAOOqRaSPg8Rq4VoIsnGApVqV/Z5cDAusC9h46a5xcg2Fz2BBiqsaWqtmVmjI3szIrFgFWXL1hMsDCFJEscP7MavxahypbFZIJIW6FG8eEtqsJPBOtZJiVOZ8bppDQYyTiyl8yirabggWkjWxX4/fj9kMgbRaAIlk6bCl5ro0z0okJTLiSdTrGlqnWjvGhCpWfB3M15bkiTOdHaSSiXweey4HTqClsAmZHDZddyO89tUmo1UBpIZAVVzoItuLFY/Tk8Qt8eHw+FAkiTaWg7SUJKcMIODbFmmvjErOKqoqZv70gZxcXJx1hgF2PHkk8Sefhp1cJBL43F0VeWfn3qKLw4OUnmO134C+MZZbXGyRkf9TieRUAiluhrrvHn4li+ndM0a6puaKCoqMmt8mbwmOXPmIHPmtDIykmbHjjZuvlnNMSL51a+GWbs2ydw8z+mnn/agKNdz5ZW3vGLjPV90XUeWJZKxUUZHRykPpCmYRbsdjkNEcjO3aekrN0iTVy3KeHSplsmgpCVUOY0xRTh9vrapoWdrkgoYGLqOYehgPJ+6n3WLtwvw4c9+lqb2bfzzDDXuAB4bzroXv/Vcf+heIkk1K572ZyCsiaQMEVW0oYt2NJsT3e7C5XLjdzt4elRjoL+ZH12e5qzMLnQD/uU5G4nCeWxas4yFhaAjIKkWFCzogogo2rDbrXicdgJuG4Vu60R6qm5AQoVYmmxEkuBAtbrB4UNwFWDzFeEMFOMJhPD7/XnTmn7+7fW88/rJXMhfbbERCK3iDVdnFdqHt1upcVRR5c+mep4YtBLPWLEXzuHSK2+ZMRo5H7IsE4/HScRGkZMjKKkxtEwEtBiinuJEay8uS5jXr9BwTPmsWvvhL0cc3HV9Ga7xEGTNgEeON3LD7e8+/384ExOTWenu7ubZRx5AScYwsDB/7QZWrF3/igQ3tJ44Sm/bMaptMQqtKrIGHRk/loIyVl5yBfF4nGfu/Sk3l0dmvMbjrQkS8Si31irTzh0YVPntvl6+uEJib1ecE6faef/C/JvahgF3PCpybaOTImuaQptKuRsqPeB9Bc2lJBX6klkB9dvDniwAAQAASURBVO42+PdboLYof1/DgLf/Dr7/SfBf4H343hFoH4CeUSsxyYrHbcftdFFU6KaowMHXf9nJdz8o573v9x8rpGj1V3jT2z5wYQdl8jfN6MgID7z/Tq499ETeSNDWDDxjD3BH0xy8VpGTqoVTa6/m8o/8E2eOHiL2+BYWxwcJzqCl75BB88Km0PRzigZ3D9p448IyfDaRY6oXFl6GI9pHmTxCcJbHWUKFHosf57yVVDU2EY/H6e/qQFMVvAWFVM2pnXgeaprGUG8Xcu8JyqzJGTdadAMGZQuyryqbZv8SAmWGhzsoLh4EoLtborpaZWxMxSfGJ6I8R6IQKF/OqeZeFladmHhtW4+TxiXvnXbNdDrN9r88gJ7uoa4yjCjq9Az6iMshLrnsZoqLi0mn06SSMeRUBF2JYdFSWMU0HruRI2C+GDQDpDSkMhb6xmBBlY5jhs+yY8RGsGwZgQuwQXeRcfEKo4qi8Muvf50bYjGe7u/nRkXhg7t3886ODjbN8joDeLMgcH1dHZbGRpyLFhFcvZqq5cupq683TVdMLjoymQyRyIOUlOhs3XqGjRsjnP33TNNgy5ZR4nGJFStUAgEYHLRx5EgJjY2bufzy6/4qY38hDA8NMjZ8hvpyPW/6hKJB57CI1e6jrmEW9xsTk/Pg+TR9RVHQ0mnUtIyWyaArGdA1BF3DYoAFHYsBYNA1MMCn3v1m/mdOhMY8pZviKtx43MPNb3s36mAn8lAPzsQIrnQcvyYTtCiU2HSqnFB+AXa9z0VUgW4Z/l8PfPl1M9ez0w247Qk3my5ZTUOxm4aQi+qAHZ9j+mogqcCYDJEMyKpIBgs6IharNSueOhzj4qmYk4Kf1iGehrhqQcZGRnCh293g9LPvxF7ef8t3Jvq2nIbhxFL6hhaRigqIBmiKFavNzhWLAtSE7MRl+HNnKbe89YM4HA7S6TTxeJx4PEw6MUwmOYqmREDNCp42i4zTquBxavhc2bIcZ9PWm6a5fYgb12h5P6fhGDx22M3brplMo3r4WA1vuP2D5/cPYmJi8jePpmn0dJ0hFhnF7nBRU9eQY7K6c9tjFA7sZr4vPe21aR0e6PdRUr+Etv07WGQbpsIhk1QFDqS8OKtKWba+nl9984+stI7xl33N3FoR4YqK3OWdYcDnTxSz7ANv49Y3XzLeZnD0aBC7vYaBzlNEu5qJ95wk2d+KEe7BKQ1RaE1TZNcod0OF59ymly8Ew4APPwffP4d30feehY0bYcn0kuKzouvQPQIdAzCaEEllbGBx4HG7KC70UF/porzIxn/fJ/DxW6aXXuodzvDZH55mTaPMHZfpeJywr1Xkt/vqWHfNR3jHez76wgZk8prh8K5nOfJ3b+bNyd68pZUelwSk4gpurClBEAQOqVb6rryFzX/3cSJjo7Te91uKW4+ywDq5Ka4Z8PM0vKd25vuOZuBpycet87I7CQkNWpxVVG68iWhnM47B01TblBkjU1UDehQrcnE9lcvW4RvfBB4bHeXkkX2ochwQcPpDLFi2CkXJEDl9mIAyQtAxs2QUTcOYWEhB7VIKX2BauKIoxOOHKCzUGBpSCAZlbDaQJB01GsU3vj6V0qC5FnGmvYtFNacnXn+y20/T0ndMu+aD9/2UTau6KCrIOUVGhYefLuSyze+gOM9YDcMgnU6TjEfJyGH0TByLkcImZvA48s/1ZiMhZ+d6dbN8LIoG7aMh5i9a8cIubnLxCqMArS0tnP7d74j197MkkWDLmTN07N3L/6SnTyae51mg5b/+i/d+6lOv3EBNTP6G6eh4jrq6MxgG3H9/C7feOvP3R5IMHnoojcWyjMbGRSxatAyr9dVRxlhRFDpPt2DRU5QHDdxT0pUTMvRHLLicTpzeckLFxX+9gZpcFDyfpq8qClpGxkgryGmZx7c+zM+/8m/cGUhwZ5mOS8xOkB8eEfhmv4f/++3vs3pBI22KjcrGBdMiJDVNo7u7m5ZjR+k7upd462GMgdM4YsN4MzGKSFNq06l2Zh2TXyqaAR/tgO9dM3u/L+wByR7k2vlB5pV4UC02+pMCMVUkgxWLzYHX5SDkd1MTsONxzJwPllKz4mk0DSlNJGMI6FgnxFO33U6B20qR24bLJpCSFY7yddYtn7zGvU9W4JWWc82CwESbpMKWY1YaqgKsqvfSG4UDw1YWzgGPQ8XvZsaoAVUHSdZJpnVSkoaU1sgoGoqqoakamq6x/2SaD16n4ZxlIv27HVauu6wcv1tEN+Dh4/XcePv06AcTE5PXJoZh8PRjDyP3HGFtQZKgM+u03BK30pL2sOSSy2mavx7DMGg5cZzh/h6k9BgbXxfAPf6ACoeh7aSX/TseY+e2x7FEzvCG0BAha4ZmOcAhGtn85uu4852LJ+47PGzB57shb4CIYRg8sfXHzPdmqPIbjEWT9A5GGB4YIjo0wEj/ELFwHJ+RxKsOE7AohBw6FW4o94D1PMoyyyp87gR89fbZ+z3VCmE/3LJh+jlVg85B6ByCsYQVWbEhWh14PW5Kitw0VLkoDlhnzf77r3vhH2+b+f77W5I89OwIB7tC3P7Wf+CNd743R9g2uTgxDIMt3/l/eL7xb1xpzbOpYcDvZBsrGupYEvQCsEuzk7j5Lja9831omsbRJ7ai7HiMZZkonQokfLDuHKaxP+u38+7lueZK/WmBgaqVLNh8PUNnTpM6dYBKLYpvluVaWIEBexHDVi+e9BALfdJEdGgsA0fjPkqaVjJ3wWJkWWag/Ti2yBlKXeqMwquswoDixFY+n5KquvOKyh8Z6aWwsJt0WkeWkzwfNGkYMHwmTMmUz2NIbmS4r5tFc3om2lq6S5i/9I6ca+589nHmBJ+isiS/zKWo8MiuOm669X3nHN/zGIaBJEkkk1FUKYyuxLEYEg5RweNkxmjQrhEIesF3jji8lgEP85dcet7jMQEudmEU4PiBA5x6/HGSHR1IsRiPPv00b+rv50369NSRUeDDTU387MCBv4laiCYmf20kSUKSHqKw0EBRdB59tJkbbpg5jRegowOSyTtYvHj5KzPIC8jIyDDx8ABWSwZV1cmaIAg4HRYsVjuy6qSiqtasF2zyV8EwDHo624n2dfHD73yTtn27cBoKacHGiss28c8f+RBOt5uetEigpo5gYZ78qvMgk8nQ19dHT0cbIy2HibYeRe5pRRztwSuNEdQlyq0aVU4oPEf6UFiB74Ths+eYvz3SmY1gvXYOdEThZFRgVLGhW10U+LzUl/hoKnEBAj1JGEgJxFWRDDasNgdej4Nin4uaoB3XeViMSiqMpbPiaVK1sC/6EB96Z2Ti/Pd+5SA8toxbFleyqNqVU3v4p3usLKkP4LDC4QGVxkodXdPQjWxdWUHQEQUDq8XAatVxWA1cdnA7wO3M/lfMMz37xV/grtfNPu5TvTAqh7hksZdTfVaU0C0sWmJGDZiYXEykUkkk6Th7nzmOlo4hCBbmLqmhpLwEQZiP3z+ZYqkoConEdqZmXfb2FlFZuTKnz7PPPkssPEpd4zxCIS+h0F6mTnU6O+dSW5v/WdPVdZzS0u0cOwjpMMwNQIETJAVOjblJO8pYd9lVHD58N6tXdwKgaTpHj6aIRW9BHu4m0nWCeM9JUv2tOKQOvKpCoVWlxGlQ6YViF3xiP3zrztk/m/uPwJgHqksEwkkRWbEj2hz4PG7Kiz00VDkp9L/4Dfuv/TErjM7msRdPwS+OvoG//+QXXvR9TF6bxGMx/vj372LjjvtoyLOU6FLgcYufW5vmUOiwoRvwtOBGeOuHuPyNb8FisdDR0sz2n/+IK5xD1J9Drvhpv413Lq2cMGqaSkvaDiuvpWnlOiKRMAOHnsMbPkO1PX/WSnMS7G5oCOS/1/6wm4pVV1NemTVAU1WVoZ4zpPubKbOmZkyz1wwYlETS/hrKGhfPuJFgGAYjI/sIhTR6ehJUV0/KUooC/Z1Rakon9Z2u0QqSsT4W1AxPvueeWuYveUPOde//43e4ZdNA/sGNs32fj2XrPviS60trmpZdWyciKOkIhppARMIhqnid0B/O1kD2niMwwRRGXxTnJYy+OsK5XiSLVq6kfsECDj7zDAOnT7OqpISf3X8/fxkY4O/SaZaQ9Q77ic3GwUWL+M6jj5qiqInJOAMD+6iry/7hEUULswRbTxCN2ikoKDh3x79BQqFiLBaIhkex2hVsImg6yJoFOx4qqipNUdTkr4YgCARDpRiqyr99/kt4LQZjUhpN0xEEGDBATVupbpiH1/fi3SXsdju1tbXU1tbC5qvy9pFlmZ6eHo61n2Ks9QipMydR+k4jjPbiSoxQqCUot2mU2LP1P89FJAM12SAJ6gqgrsBg0uEzSlKCAwegOyWSwoHd4aa0yMfyci8l3ux3Mq1Az2kYlLORpio2rHYHPreTEr+T6qBjIr3eZYVKa7ZeHuj0DtcChybGs35ZGsfpNK2dPdy328Ydl5UyvyI7Wb9hocquwRFuvhSWNr3wz3cmzqdEud0GSsJAysDhvhJuvdw0XjIxudiQ5QECARdrL19A4ZQIqf5+G2VlgZy+IyMdlE9xeU+loKAgtyC8zWZj06ZNQHbh3tu7JUcU7e21Ulm5mHwoioKmPYvDAavWgyTBgT0WhEwDLreHpkuX4Pf7GRsbpra2c+J1omhB19ew8YrNE22GYbBjx8fZuHEEyF7rkS0av9/phb5dDCrtpJV0Tv3ls7m3tZi3fPy/cRd4cekqhq5i6BqarpDQNQ6pGvqICrqGYagYhjbRxzA0MDRUJU14dAA1IyFg4HS58fq8CBiI3iGebe7k8kUzxwo9dCjANbecI+ff5KLE5/fz7nvu5eSRw9z9vjfyptE23FNEyxobvJcYO44dZTBYxq115WwihfKr/+aJ3/2EwPs/xZprr2PFHW8n+sC3yVpAz4xkWDhYsY6SM/uoceQKnvMdGTJHtnDwyA7Kr3ozCzZfh6IotLccRW0/TI0lxfNm77oBAypsDsx8r6UFKXYe3T8hjFqtVipqG6C2gfDoMAOnjxHQpqfZiwJUuDVQOwgf7mRADBGoX0ywKDc7LxIZIRDQGBhIU1aWe42BASuaYSU7Z8yiZGREQc69l9Wbc6woCi57bp98VJfGGRjoe8nCqCiKeL1evF4vUJUzDlmS0JJ9hBM9eGcpRaAZYGCuRV8uXtPCKIDL5eLSq6+eOP6Xb36TPbt384MvfpHRnh5Kamp472c/yz+uNp2mTUyeJ5FIUFg4QCKh09ycIpHIIEk2kkkVzwy1AgE6Owu56aY5r9xALzCFhcX4fAEkKUU6LWEXRYq9Bdjtr6DbgInJDGQFz0qioyOMpSVEh4gFUBBwu7yUlJe/IuK90+mksbGRxsZGuPb6vH0SiQTdXV2cevt1KFrXtJpsU3m6F75zxcznPTZYVwbr0IDU+M8IHZ2wdSK61Inf56W+2M/qMid2qwpIAEgZ6G6HQUkgoYmo2LE57PjcTsoKnCwI1XL05CGWNGVTshrnwGM7R7hjZSk3LtL47+29iJdWMbfcSYkXoq0zj/XFklGz955NIO0YFFGtbh4+UsG1N77jVVOqxMTE5MKgKBmczhSxmMrU/S9FAau1IicNXNd1BKE35/XhsIfKypk3zvr6WqiomBQXVBV0fcGMf1fa2razYMGk0ZPVChU1l1BXtzyn3+nT9zN1mdXfLzB37k05ffbte4BLLhmZOHa5IFi8lq9+85P82yc2s7lY4f8+1cpn8+/XsafbzoLL3sz1L6Mo+XpV5fOfeQcrGk7hzZPu2j8GnfEm7sznRmpiMk7T0mXMe+4Uj939Y9Qvfpw3WFI55y93gpoa4Hf7RphbV8uakJ9rtAjS9/+DP//8u1R8+J85bClhBX0z3iOmQpGQxti9BenWf2BvywHmxtoITPkq20VYSYTIYz9kr7+BBa+/g4YlK2HJSoYH+uk8uptgYgCLoVM6y9oPwGYBayaKoijTnhfBomKCRZuRJImO9mM4ol2UurRp2TNBh0GQYeTT2+g85cZW3kRpVR1WqxVF6SGd1vB6MzkbNyMjUFISpLsjyVRh1DAURCGTc33RmmuWKQgCeZKIp6GqAhZhlknsS8Rms2Gz2fD6fJw4EkYzEnkziwCGoxaKiqvynzR5ybymU+lNTExeGIqiIMsyvb3PUVg4yPHjcVat0vD7YXRUY+fOUa6/XkXM8/fh0CEnhnElK1aY4f0mJi8nhmGQSiXJpDNYBAG31/s3G828/fGtPPel2/nM0lTe80/2CPyyv5zrqlUqjBGWFOoUvIT6pkkFjo1CT0okYThwuNyUBn0sqpiMLj27/7ePQ/G8oyQSCi3HoNQJ0TikFBeXLSziLRuK+e8dHv7lthoA7jkE77j2/MckK5CUISVDKiOQ1kQymh1Vt6PhQLe4aO2S2NA4SFNl/mvoBnzjIT833vEPNM5bgGW2XE4TE5PXJOFwL8HgGENDEiUlkyv64WELodCaHGF0eLiXQODEhIigKBCPL6WwsDTvtRVFYWTkQcrLJyPLurocVFbegJhn0heJjKHrv6WwcHJ52NLio6npHTnjCIdHUNVvMLU8+4ED81m5clLAjEbDDA19nLlzJyPgDh1y0NT0PTo7T1Ba+gF+/r8JrJZTjOyGj62BwnGhRtHgj8c87FKv5Bs/uTfvWC8kQ0NDfPf/foyr53dy6fwMoiW7sfXkUTd7e+fxqX//Np7ZIghMTKYgSRJ/+OSHWPXIL1hkmy61DKqwxfBwQ1MdZa5skEZMh4dthQRqCrmuYnKDdFhS6U0oOESB51JOriuGUgf0p6Fz0Q3Urt5A/xO/YzER7Hm+Jl1pkXDjJSy87KqJOaUsyxza+RQlqTbqz5EQuDfsZtFVbz5n9q2iKAz1dKIMtFBmlWY0alMNGJSspDzllNbrJBISFVPM4mQZUqkAhYVOTjUPMK8yPHGuo8+JSB81pZPPs+7EdVRX1+fc4/4//pCbruia1ZD0kZ2FbLr6w69IveBweIzB7mPMLUtPE0ejkkBfvIimBcvMOeALx6wxamJicn5IkkRr62E0LYzLlUZRMnR1jXHttRpTg5K6ujLs2RNh5UqVurpsdNPYGOzdG8DnW86ll149801MTEwuSv73G1+m6/6v88mmCMHxKJu0Br9oc9JSeQNf//HvsFgsaJpGW2srrXueJHL8KYy+IxSmumh0S8wNMOvE9Vx0xuBkRGBEsaGLTvx+L3XFPhpDLv7fCdjTfIzPX62yYspGvGHAo80Cj572Uz+3nqJSBz6nnZYhO1VlbpxuH4FgAJvdgyG4werGYvMhOnxY7QU43EEcriBurx+Px4PL5cLhcEwz99A0jae3P8Z9v/4OZQVJqksc3LChkKAvu3LRDfj97iArNv0dTQvyp7SamJi8tlFVlWTyJA6Hiq5LTNUe+vuLKC/PjVLs7d1BZaU8pY+NsrIrZjQX6ujYT11d+8RxJgNjY+soK8ufBXTixG9YuHBs4jgWg0zmdkKhspx++/b9hNWrJ52hBwYE3O5P4/dPRm9t2/ZZNm+evHcyCR0df8fixZezZcut3HhjF3fffZx3vStNSzPc/R0Y6QCXaxGGs5Sb3v4xrr7uxlmNky4kqqryzFNPsPeZB7GQwbB42HTtW1i1Zv0rNgaT1xadba385b1v5PbuIxTkES33pqHVV8wdDVXYxidDwxo8Ingorwmwrz9MERlqnRph1cIJycqiYh93NIUQhKxJ2zOWKla9/1/oa2+B/Y8y35mZdh/dgBMZJ65Lb6Jh0TIAwuEwZ565j+UBadb3sL0XyptWMnfZuvMW7saGh4h2HiGohQnMkkI+JkPUZiNQ7yRYmF2Ydnfbqa7O1hM51RJhXkX/RP+uQQtOy+CEIZOiQcR4E8VnGegeP34INfIgy5ry130Kx+G55iW8/vq3nNf7uRBEwmF6e1pxWyW89gyaLhCWXDhdhVTXzTWzhV4cpjBqYmJyblKpFEeOPM3SpbGJiXZzs0QgkMipTfU8igLHjqVobU0jikWEQtWsWLExZ5JrYmJiMpUTx4/z8298HnmgFcEw0Dwl3P6Bf+SKK68+50IyHA5z/OAe+vY/jtz+HM6xU1QYIywu1Am8xOjS42PwrePw2VugKX8gFY81C2wfqOC2m0pZPUV7SKWhbxSGEzYSip+MUATOCpz+evzFTRSXN1BeUYHDMfMgO0638bPv/StXNvWyYYGM1QJnhuCPz1rx+AI0NdbQNlrCxqvvNEVRE5OLmFhsBLe7n7ExmZISbUo7uFyrcrIGYrEwdvs+pprIDww0UlZWl/fasiwRjz9EcfHkUq+jw0Nt7fV5n89dXS2Ulj7J1EfbiRNzWLjwhpx+4fAYqvrfOdGi+/c3sWrVXRPHx48/S23t/+SUadq2rZ7Nm/+TI0eepa7uozQ3R2lsbM+pqXrPPe/jHe/437zvx8Tk1crT9/6B4X9+P7cb0WnndAPulUVKqmvYWJqtd9mcgfs0+Ke52XT2qeyJCuxO+/jIyoqJMj3HJBvWG/+e+kXLOP7kw5T17Kc8jyApaXBcLGXO699EcUkZ2x76I5v8gzOW+5FV2D8Ma0uhTfZTsfYGCl5ATU4plWKg/SjOeDelTn3GjXBJhQHVQtrror6pCrs9+6Y7OjLMKWonnQY5AyMRnbLAKL7xdW0sCdbCd0+LZjUMg0e3/pEy3yGWNuVuwPePCDx7uIobbn4XTuc5rOJfBhKJBKlUClEU8fv9f7OZYa8STGHUxMTk3Bw48BQLFw7mTKB37Ihy2WWZWevdKQo891w9l1123cs/SBMTE5MpaJpGe1sbrXueJHz8Keg9TCDVzVx36gVFl6YU+OfD8O1Z3I4NA27+qZ1PvH8em5bZzjsiKC5la86NJuzEFT8ZSwiLsxJHoA5/aD5Ob4j77v53/vmmHux5AgC27HMy4n4j73rfx80oJBOTi5yxsRYKChSi0eRZpktuysuX5vTt7d1LZWVk4nh4WCAQuGLGhXVHxzPU1U3WK5QkkKRNFBaWTOurKArd3XdTXz8ZbdbdLVJcPF082LfvZ6xe3TZxnI0W/Uf8/gCQTdNtbv4wK1ZMRmu1tooUF3+LgoIAf/7zDbzhDQP84hdHueuuyVqm27bZWbNmdNzExMTktUUmk+EP//6PLPj991hpm14EM6zBvZqLq+bWc7fh4N8WgHWGAM0Hhy2UlVewtnzyuxJW4EjVpVx65wdIJhK0bv0tC+QevHkiVYfT0FWyiMDCVYw172R1IDVtbajosLMfloWY2Kweli1EQstpeAHRozCeZt99GnXgJGU2GccMwZGKDkOyBSVYQFF1iPCIykB3By4R3CIMx1VWrQpjGx/rwCiU1H8o71iaj+1ETzxMayfZzR4DZK2MkrIm1qzbZPpMvDYwXelNTExmJ5lM4nDEyLcRdq51uM1G1sXTxMTE5BVGFEXmNTUxr6kJ+PBEeyQSYdfBvfTuexT59B6coycpH69dmi+69NAIbDiHT4YgwOqaDIUc48kdMBq3kdYcOJ0uiou8zJ/jpazIOk289LnAVwlZQ4CR8Z+W7Ekdvvcr+MBmsFuhZyjDUFiltNBKZXF2En7japmvbNmJpn3ETJ0yMbmISaUSeL1KXtMlrzc31V2WZXy+SE5bJlM6oyiaSMQoLMw1cenvD1JfP10UBWhvf4b586e4PyuQyayZJopGImFqatpy2np7G1m1KjBxvHv399m0aVIUVRQIh29l7twg+/c/zubNAzz9dJhbb1VyrjMw8PemKGrymsVut/O2r32b/o99hp++9w5uPLWL4imiZVCE94oSR08dx+ItRG2qwTqD+Hhdkc4XO8I5wmjQBlcM7uSZrzXT9N5/Y82dH6Kr9SRtT93LImsiJ/K02AHF0eO0bzuJXL6E7aN25rnilLk1dAPOpGycCsPSoJIzxyp26gRiBzj5eCtla28gGJyymzMLNpuNyvomqG9iqL+XsdN7qBAV/GfN32wWqHTrkA7Tui9MQhBYWT4pENsEbUIUBUgr4owCrRQ7wsp5sKgxm3J/+FSIVZf9g7khfRFizrRNTC5iRkeHKCmZXjNGFAVkmbyC6fOEw+DxnH+ahImJicnLTSAQYMPmq2HzZL3j56NLn937F8LHtkPvEQKpLhrdKdIa2M7Dq8MmQnkhLKsHUMZ/EsAwPSOwrRmGY1bSmgOH001xoZd5NR4qi2eOMI1JcLwtwv95YoDa4gxVIZ2tIxa6Rhy85ZoyNq0sYH1tL/v27mb9JZe99A/HxMTkVYksD1JYCJGIkuPIHImIhEK5ZYxGR1upnGLiFo9DUVHjjNceHNxDQ8PkcSwGxcXr8vaNxcKEQs05be3tXubNWzGtb3v7/axaNXk8NAQNDTdPHHd0NLN48b6c1+zaFeLyy2/BMAyGhv6LlSsNuru72bhxss/WrU5uvfXLM74fE5PXCuWVlbxn606ee3wrT3zsLt6UGc4x5FnigCXKGFu2RHAsrOLqeUXImsEfT47QPJrEabVwY2MIb2Et27QyLhcGciJLL7OHOf2jz9Bz+VtZsfn1VDV8hubdT+E8vp0Gh5ozlganypzRgxxTvHQ1rqZT0RAsApXzG3n9nDr6zrRz5uQ25ngmNzFsFljgjjO877ecKlpG4/JLXlD0aFIepm61F03V6GiXcSYUyl25CcyKDhEVVs8xcgJ6FCN3/Bk1/8aQruv4nJO1SW0iOLwLTFH0IsUURk1MLkIURUHTNFRVzXt+7lw3LS0Ky5dPT+F4npMnfSxZsvxlGqGJiYnJhSE3uvRDE+2jo6Ps/ON/cuC33+G2FTM/6wC6olDky3+uKpT9AXX8JwkM0z8G25+F4agVWXNgd7gIBb3MrfFQU2qnrXMEu9TH9z+kMblW0NF1la/fe4aRSAWL54VoHeh+qR+BiYnJq5RMJoPTmUKWDbzes59TpTkLeEVRsNsHc3rEYgEqK/O7KYfDw5SXj+W0jY6WU1eXv2Z8T8+jLFw4KUxkRddrpokd0WiYqqr2nLaurkZWr85upquqSn//t6mbUvK0r09g7txPIQgCu3dvYfPmER5/fJTbbpucp+o6xOOf/qvU+zMx+Wux7urXs/poP/d+5XNU/PirbLDlrt1udOok27r4h0O9KG4Ld5Uq3F4KSRX+eCLCXxJD3Pn5I+ze9QTzTj1OyZTM8HqXRuq5e9h2Yj+XvPdTLLp0M9KK9ex//D5qho5TPKWv1QLLHQkSndtpdlYx9/VvITBeR7Sqbi5yeTXHn3uMOr0b9xSFqdhpEEwc4tRj7ZSuvZ5gYeic71mSUvh8w9nUdodI3VIP4TB0DJTA2GkqHQp2EXoSUBuanuWonVUqUpbJS39/D9Xlk59nPAXl1avydzZ5zXP+sr2JicmrHkVRGBkZIhzuRZL6cDhUhoam76IVF1tJpez09+e5CNDRYcdur8cztVq+iYmJyasITZNxF/QQ8TqIzmK22jIAVhdEUy/s+uWFsHkpvOlylbs2JXnLJSNcNb8TZ/o4Dz1xEORuPnXrVFE0i8UCn3mjyvZ9A3QOQKCwLP8NTExMXvMkEoO43RCLpXOc6GMxCARyHTJHR3tyDJRkGXy+maNFI5F9OdccHRUoK1udt29PTyv19aM5bV1d1RQXT3fpbGt7kNLSyXEMD0NDwy0Tx88992vWr4/lvKa9/QrKy2vQdZ1Y7JvY7QbhcC+uKZruli1ebrnl32d8PyYmr1VEUeSOf/9PFuwf4KdLrqbnrLiWhyRYUqjxowUKlxVm62wWO+BDVRq/aQjz8esvZem1t5G8/V85KOVuLLhF2Jw6wdGvfYSutlZcLherbnorwk0fYT8lSGdVTfOKsEbpQfrjf3PgkXvJZLKlNZxOJ4uuuIlw3bV0JHPXllYB5nvi6Pt/z8l9O9C0mUuxGYbBwMA+QlP0U0WBRKKCqsaFlCxvIFpVTUfGyUgGQnmWorqQe/2Mkj8CdLhvL84pQ+0acBIKFefta/LaxxRGTUwuErKiaD8eTxSbLYksJ9A0mZGR7B+cs1m3zkdPj4unnhLp7RUIh7MF9p9+OkA8voQVKza88m/CxMTE5AJx+PCDrF59ihveJvGxv5BXHO0Ow5cPr+JLv4kSXtnKo+rP+U37+/nFvjX84blinj5uYSjywu5bGoTWXvin22fv94FrM/zs0RTrLjGftSYmFyOqqiKKMXQdrNbchb4s+3LqhhqGgWGcyekzOurE789f8mhoqIuKinhOWyxWi8s1PbpUURTS6e055ZV6e0Xq66+e1jcWi1BZ2ZrT1tXVQHA8smxoqJ+amsdyNoR27/ayfv27AHj22T+weXOEP/95iNtum3zPqgqG8TnTmdnkoqawqIj33PsYY79+lns8VaQN0AzYpsPf1eV/TcAGnyvo5tNvvIaqhnk0ferb/MXRiHyWNrnGlcL228+x677fYBgGoZIyVt31MfrWvoljaSf6WTbc5Q6DlcP7OX33V2g5sJtwOMzjW/7Egae3crxf4rdH4uzpSqFMCXQvcho0po7Q+vgvCI8M5x3v4GAHVVXpnLbeXitVVQtJpyUcDoHiMi916+owznKZn0A8K+U+o9Fx4inisdwNGYuaWwc5o1fnv57JRYGZSm9icpEQiYwCUfr6ZPx+jbExCY9HZelSF4cOaSxdqmdTFsYRRait9dPZWUwiEWJ0NIHbXcAllzSYE1MTE5NXNclkElH8Bdu2tfP+98Pll8O//zP4U7AuBJphYVtfCULJYr73m3vx+Xz4/X4aGhuBuyauo+s6XV1dPHFiF8MdT6GED+NUT1PiHqWpUqN8Br+B7hGYf47599I6wMB0RDUxuUhJJsN4PDrR6HTTJZerKqdvODxEKKTk9LHb6/NeV9d1UqlDlEzxV+rvt1BVtTxv//b2ndMMlyRpVV4RtbX1QVatyo0Wra/P1hY1DIPm5v/iiismz4fDEAr9PTabDVVVUZT/QRAMMpn+nHqq998f4NZbP553fCYmFxtLL7mUJQe7uOc//4Pe736Jaypm77/YB0LrER79hxtZ/X9+wus++nn2Pb6F4t2/Z45zUrksd0Do1ENs/69DrPrAv+IvKKBh0TKUeQs5+swTBNt2UePIVVTnOzM0P7eF7c/8mSurNfzj8x7DgNMJkd8fkrhtaSEuazZqUxRgvidF+OAfaAksonHFhgmDyVQqgcvVnvPdHxsDj2c+yWSCsbE+xPG68G432F1OhpMpSs7yYrOIuWVHLIJIXWCQxOhWOroK8Jcuw+XxU1I4KZTqBniLVp7rozd5DWMKoyYmFwGKopBIjOJ0pmhoMGhrk6isVAkEAEQWLPBy4oSEKGr4fAaqCmNjbgoKKlm5cgmieB7uJCYmJiavEh5++NN4PD285S3Z/PjKSvjOPfDVr3oQFt1IPDyHj1yyEZ+vHp9vhuKigMVioba2ltraWuDOiXbDMOjp6eHJY7sY7nyazNghHEo7Ja5h5lXMnEJ2NmWVNS/2LZqYmLzK0bRRrNbsHC7XdMk6zXRJktopnLIRMzpqpaRkepo7QF9fK5WVk0X3NA0UZX7eTe94PEZR0YmcttOn3cydO70OXywWo6LiVE5bV1c9q1YVAXDw4CNccslAzvlDh5awefNSAHbsuIcrrkjwwAOD3HzzpLCRToPH81VzLmpiMgVBELjrs1/kqxmFpqe+ds7+TnRucAxz+D9uo/st/4c1V9/IwMLlPPvTr7DBGZ3oZ7PAZno49q2PYb3hw8xfuRabzcayzdeRWH0Z+7b+kcZYG4Hxx0VYgXYFbqnTcmp9CgI0+DRCDo0HTkrc0OTGO0V5CjoNCqRjtD5xmtCq6wkUhgiHD+aYx2UyEI26sVplRHGM8nIdmy0ruvb3JyktD3OmFYo9uXVGRWtuxGjAnX12eB3gdUSRpafZfyjGhim+cb2DAnPmzT/3B2/ymsUURk1MLgIymQyqmqK83CCdNtB1bVwUzeL1iqxY4UWWdRIJnXQarNZ66uqa/mpjNjExMXk5OHZsFwsXPk083pMThbVnj8CmTXdit8/h6qvXoqpeFKXoRd1DEASqq6uprq4G3jTRbhgG/f39sPPjHOn4QzYqdAb2t1mYv2TjzB1MTExes6RSCXw+ZQbTpZIc06VEIk4wmMzpYRiVeR2gFUVBEE7kCK19fTYqKvILAl1dW1m0aPL+iQQEg1flvXZb2wOsXJk/WjQej+Fy/Y6pAfBHj9pYu/YjE+MSxZ+gqjp2+wBTNdB77y3hLW/5QN7xmZhc7NTPW8DYXwTAmLWfNP41XuZRGfvTf/DAwWd5wyc/T9E/f4ttv/guq4b24Z+iDC12KYS3fovtRy9lw1s/gM1mw+vzsfqOd9Pf3cXpJ37HYiIciMPlNdMNkJ6nwA6lDo2+ko1Yu3ZT752MPrcI0ORJET78Rw6LFSy5zANMXmhw0IogBAiFEjn1hkdHE9jtPYRCBuhwrBMWhLIGUQA2W+4z0+3I3VRxWsFlH8ppG4kVUm1m6FzUmDVGTUwuAqLRMUpKslFKQ0NKTlH8qTidFkIhK5WVVmQ5/EoO0cTExORlR5ZlhoY+w3PPtXLJJZPtySQ8++wa5s4toapqEbGYAFjwegMX9P6CIFBRUcH/+cqP+OH22hn7GQb871NzePt7PnpB729iYvLqQJIGsdkgHs/kGCTF49NNl6LR1pw+2fT0/Lsuvb3HqKzMTbm3WpdOpLLm9m2nvj63DuCZM5WUlEyvAxKPxygvP5nT1tVVSzCYdVDZt++bLFgw6RgjSWAY75ww8dy+/X/ZuFHi/vv7ueGGSVEjmYTS0m/mCMEmJiaTvP6W27jfqJ21z0gGEnKazmg2UrzQDjd2b+WRj95CZGyUze/9BN1XfphmKfc5ELTBpqGd7P7axxkamHTkLa+uYcW7/pHTS29kzBAoOIeeuNgbZ3RkkKor38kJoZ7EWeZRQQcsF/voePI0w0PZgu9DQ+B0unA4LDmi6PBwHFHszoqiQHkllM2D5/oEjg7ZaB215NRDzqgQTpcyHJ98hhgGeN25heXTSSsdp/Yiz2Rhb/KaxxRGTUwuAhRFnpg0q6rB+WyICcLsO48mJiYmrzYeffSzjI6e4u1vzy3s/9OfBnn/+zfT0RGipMSLooikUuLLVk85EAhw1R2f44v3lqKelVmvavCFP5Xxhrd+cdY0fhMTk9cmmUwGlyuFroMo5ioIkpRrupTJZHC7c93iU6lQ3mdXOp3G7W7PaevpcVFWNr0WqaIopFLbcgSJ/n6Rurpr8o65tXUL5eWT88aREaitvQWAlpY9rF6dK5ru3l3N0qWbgeyGlcfzS1IpncLC3Ciu++6rYvPmt+S9p4mJCfj9fnwrN3MwmT8R2DDgq6fhc43QebKZo0NZ0zWLADda++n+15s5+NQTLFq7gbKPfJNtWhnqWUHql9sjJH70aQ5u2zrRJggC81etx1VYwrlwWCEjy9jtdhZedh2JeTfSnshdjFoEmOfRsB7p5vjOAUTRiST5CAYnn4EDAxHs9h6CZ3nKRSI21mxYQuPK+bir5+Ce4pmRkqFh0Qb8tTfRmWygPyLSN5qipnJKJLwEDZUB6rwdJLu30HpkG08+voV77v4v7vnZ19m+7c+mYHoRYAqjJiYXARaLiD7+/LfbLZzPs90wzN15ExOT1w7NzXspK9vC/PmDOUZzf/mLhYULb2Vw0MaiRdnyIaIoomkzuJ1eIG6945287q5f89HfbeSzf6jkB48X8tk/VPGxP2zi2vf8lhtve+vLen8TE5O/TRKJQdxu8pouOZ25LisjI6dzRIJkEoLBeXmv29d3gJKSSTFAlsHrXZ03GvP06d3MnTu5gaRpkEgsx53HBToej1NW1pzT1tlZS1FRMel0mkTihznvo6PDwrJln5o43rbtu1x6aZr77uvh6qsnxdVoFOrrv29Gi5qYnIN/++YP+EnJtfxyzEt6ymbr6RR85ARcUwSNHthUaKD0tLKjazIrcKVHperXn2HLNz6P3+/nik9/nd31VzOYu39MvUun6bl7+Mv3vpQjEuqia5pj/dkMpCwUlU4WDy2rrKHmqndxMFNBXMntG3TAIi3G8HPNpOKZibIafX1hPJ5+Cgpy+7e323E6G7HbRVwuK7qeGzEqyeB0OnE4HNTOXUVo7k2cGTVwTtFlu/qshAqyLxro72f79t9S4f49b7/2IG9//SEqXb/lVz/7Vw7u3zX7GzV5VWMKoyYmFwHBYDEjI9mJZUmJlcHB2SeZ0Sh4POfeATQxMTF5NZDJZOjq+kdOnWpnyZLJ9rExaGm5lI0by5DlGlwuG+k0eL02HI4XV1/0hXDp5a/jf+55io9+7RCbP7iTj339EN/7+TbWb7jiZb+3iYnJ3x7ZWpuRif/PNV0S8fkCE8eqqmK19uW8PhLx4nZ7pl03mUwQCPTktPX3+ykunm7QlK1Zeiyn7fRpN/X1a/KOubV1CxUVk8rI6CjU1mZri+7e/SNWr54UUVQVBgZuoLCwGIBUKkUo9AdiMY2ampGc695/fwOXXnpD3nuamJhMYrPZ+M7vt1D1xT/xT55r+IS6mo9qa/nJ/HexrLyAa4on+670Q3mkg4dODU60FTvg+tMP8tBHbyMyNsZld7yL1Bv/lQOSM+c+bhFelzrB0a99hK7WrNFa3aKVtMdnt605MaqTHu7MaQuHRyhsLCVSX0lrYrqx2nyfQnn/Tlqea6Gra4SCgoGcDRZdh7Y2JzU1dYCFVAqGh63EYzrWKcvcjGrNqYlss9nwOHOfNamUC0GAjt4xjp46zPvuSLCgQUcQsrVT59ZqvOeWQU43/5KTLUdnfa8mr15MYdTE5CLA6/URj9vJZMBmE3A4bAwP5++rKNDV5aG8fHoNKRMTE5NXI1u3fo7BweO89a25oQm/+U0pN9+8nuPHHSxYMAfIbgxZLBY8nmC+S70shEIhmpqaKCp6+cVYExOTv10SiQheLzOYLpXmRE+OjfVTWDgZHqYo4HY35r3u4OBegsFJ8TKRgKKidXn7njnzaE5kaTIJPt+VeV3hE4kEpaW50aIdHTWEQiV0dbWyYMHunHO7dhWybt0dE8fbtv03a9ao3H9/N5dfPtlveBgWL/5x3vGZmJhMRxAENl11Dd++91G+8dhevv3oc3zpBz/jjkc6uDtTk9O30Q1rlV5+dXhys0QU4Gaxh/bP3MjhnU9RN38R8z/1bZ50NCKfVfJnjSuF7XefZ+d9v2b+4qUcVasInxVh+jzPDUKtDxam9nFw24MA6LpONDqI252kutZD7VV1NIs+Ypnc1xY4YIkxRPp4C8nY5PxN06C93UVtbS2SZEEUfahqiECgCsdZ5eIyam5ZEUmSKAlGctqsgQ10hIM8ubuZ218v5zWSEgS45XUR/vLYr1AUZXoHk1c9pjBqYnKRUF09j/Z2kUQCamsdxGI2WlsFUqnseUWBvj6RlhYfDQ3LX7baeiYmJiavJC0t+/F6/8SGDaM5TscPPmilvv46/H47odB8LJbsTDiZFBkdBcfUfHsTExOTVwBNG0IUz890SVU7mOqZNDJiJxAITbtm1oAzdzd8aKgYv3/65k9/fwd1dYM5bZ2dFZSV1UzrC3Dq1BYqp9TqC4dhzpyb0TSNrq5vUjIl+WhgAOrqPjERvRWPx6iq2sLoqMKCBWM5133ooUWsWrUp7z1NTEzOn0AwyFseOskPbSvQpqS8lzjgZscQ393djm5MnljjyVD680/y8He+gtPl4sqPfp5jq97CGTlXNip3wJpTD/PMN/+djdfdwi59IU8MFzCQgkgGWiIW7jsNDgssLwaXCPNjz3Fw24MkEnGs1jDF45GsNpuFuWvL6SurozUxPfp0rlfHeSJC884Y6TR0dHhoaJiDrgtEIk6Ki8vx+4PYbDa0TCLntbqRO5c703mM8imPyZ5BgQUL11I85xK8Xh3bLMGvogXKgsO07/8dna37SadnUINNXpWYwqiJyUWCx+NhzpxF9PW5aWsTsVhcgJdTpxwcOuTk5MkAdvsSFi9el7eGlImJicmrDUVRaG//BKOj7TQ0TLb39kIyeTmbNpVz9GiAoqIgz68LnM6setrf35PniiYmJiYvD4lEnIICHV0Hi2V206VodIyioslFedaoaU7eepyjo3vweiePw2GBsrK10/qpqkoi8ZccQXZgwEJt7dV5x5tMJigpOZHTdvp0NcXFZezZ83suuSSSc+7kyUupqpo0etq+/f+ybJnGli3drJmSpd/bC2vX3p33niYmJi8cp9PJ++7dy0/KrkOaEv3ptcIHC6P89zOtZLTJDY4yB1xz8o888PE7iITDrL76Rhzv+TLPpnMLfNossJkeBr7/T9Q3zGXNbR+kq+IajvovQ1v2RmqXXkrTlP2X58XRQ9vvo7Iy9xk3OCgwb0EhtVctpdlaROwszdFvhwVamjNPjOFx+BgbExkcdFNWNifn2ajr8ZzXGeQKo6nIoZzj4WgQh8NBPB6nKHDuSNDiQhWHJUWtp51Y54N0ND9DIpE45+tM/vYxhVETk4sIt9vN3LlLKC9fgMtVgddbwZw5C1m0aD2LF68hFCo2i9ybmJi8Zti69fMMDh7hjjty88D+/OcaFixYzMiIhUBgAQMDcOIEdHaC12uluhpSqX7ThdTExOQVQ5J6sdkgFlPx+yfb85kuxeOnckzkRkctBIOVnM3wcB8VFbGctkikOm8d0o6OPTQ0TDFV0SEeX4rH453WF+DkyYeoqsqNFq2puYWRkSHKyv6cE6G/d6+bSy55/5S+YzQ2PkZ/f4aVKyM513300TUsWrQ67z1NTExeHKIo8v6fPswfVnyQsSkp6zYL/FN5gv/Z1UpEVnPab6WT5n+8gWN7d1FWWc3az3yLbUWrieVqmix2KZRu/RYH7/8lK9ZdyuVXXceiJctYsekNnCq8DGlKf5cIa4xWjj97aqItEoFg0I3FAlargL3ES2pBgNbkdKlqnl/Dc+oo/Sc6KCurwW4/K3fekHKPhclnnWEYuK29uZ+LM2u66fF4iCXOnS0ZiYl43dl+xT6DuoI+9ME/03H8CcLhGerUmbwqMIVRE5OLDEEQ8Hq9lJVVU15eQzAYMtPmTUxMXnOcOnUQQfgN118fzWn/7W/t1NVtZNkyH6OjlSxc6KCuDhYtAo8Hensz6DpUVGgMDnb/lUZvYmJyMZFOp/F4stFKmczspkuSlCIQyI2KymTKps3lDMMgkdiX49A8NGShomLFtPsnkwl8vsNM8Sihvd1JXV3+OqTJZJLi4uM5badPVxEKlXL06H9TVzcpmMZi4Pd/MEfAeOaZL7Fggc7WrWdYunTyGh0dsHHj3XnvaWJi8tIQBIG7vvoDnrrxi3SdpR9+vCzJ/YfaOD6WW+jzEo9M8Mf/wCM//G+sViub3/MJuq/6MM1Sbs550Aabhnay+2sfZ2igf6J92cbr8oqj82N9HNx2CkWBdNqB221B16G9fYiamhRllTZqryyixeYkkid6dIlwhq4n7magtyvnnIXczqJ1cmNnYKCPORWTUaFJGcqqspswfr+fmFSMdnZp5ykYBvQPuyguzN1Y8rugLjiGM7aNjqN/Zqi/G2NKeQKTVwemMGpiYmJiYmLymkJRFI4f/xgWSwdlZZPtra1QWrqJxYvLOXbMyqJF9TmvKy6GwkKV/n4FlwsyGTM9ysTE5OUnGu3B7YZ02sDjOXtlXnKW6VJbTmp8LAahUANn099/mqqq3Kh3WW7MWz+5s/Nxysom75tKgdf7OqzW/AX3Tp16mOrq6dGihw8/wSWX5JYh2b9/AU1NkxGgw8ODzJ//FGfOyGzYkCvwbtu2kcbGhXnvaWJicmG49WP/RtuHfs7xRG6W4LtCKU6fbmNLX644WumAq47+mvs+eSfxWIxFazZQ9pFvsk0vQz3rcXW5PULiR5/m4Lat9Pb08IeffZ8jRw7zs2MqB3qlibJFz4uju7e2UlJiR1UN2tsHqauTJzaGbDaYs8xHb+lyTiWnl3lr8GbwntrC8R2PkMlkMAyDeFzmeCu0dEBKBqt9Mvx+sGcfrimPv65+O8XFpRPH6zbcxMNPTY+mf54ndnuZv+xGOkYDJPKUF3XZoK4oQVDdRfexB+k502IaNb2KMIVRExMTExMTk9cUjz76JUZGDnL99ZM79poGe/bMQxRrKSiwYbE0YrNNnwYVF0Mkkp3Imjv+JiYmLzeKouBwZJ0wY7EMninr8qzpUkVOX6dzKOf18XgAh8OZ06YoCpp2JCfytLfXRnn5omn3Hxjoora2L6ets7OU8vK6vONNpZIUFR3LaWtvr8Tt9mGz/TInQvXECSurV38sp++uXV9g7lyDJ588w7x5k+0tLXDVVXfnvaeJicmF5XVvugv5Px9nZyx38+PGgExwoIXv9trQp0yBbBa4TWvl0Ceup/ngPoLBIFf809d5rv4aBs8SCasdOke23MPen/wbr9ee4R3+o7y/sodUbJQfPNtPeLzQqUuE1Xov+x4/SkfHAHPnpnNKcCSTMDa2lEVLNlB35dtpcSwkfNa9vFZYxGmOPPwznnjgl7hTCqUaFEhw5CC0n2qfNElST+W8VlKrcjadFi5aTiRRyC8fhIGRyX7DYfjNI4VYC27g8iteT92Sa9CLrqUjUko4Ob0EnU2EmqI05dYjDJ3aQmfrQTKZzLR+Jn9bmMKoiYmJiYmJyWuG1tajJJM/4447cqM977nHzbx5q1m3LsS+fU7mzSvL+3pBAJtNR5JAEOx5+5iYmJi8FAzDIJlMMDTUy8BAJ14vM5gueXNS5EdGOikqMqacB7+/adr1+/tbqKycjFTKBi0tnpZur2ka8fiTOWLs0JCFmpprZxz7yZN/pqZmsm5zNAo1NTezZ893WLRocvyyDOn0nfh8vom2vr5uli3bTWtrite9Lplz3V27rqOmJr8Ya2JicuFZdcWVFP/wAI/EcqMxL/OrXDG8l28kqjgrs57LPRLe73+Qx376HQRBYMMd7yT1xn/lgDS5I/KnYbiiDm6pU/GNT6NsIlxWqnLX3DS/3jeEMh5p6hJhsdRJoqcz5z6xGMRiK6isnJ99vc3G/LWb0Ze9kZNJd45o250AVVS5qi7GglIIeaDcB+urYE1RPzue3EIymaQ0GMm5hy+YW1ZE13WWNA5x42bYcwTueQC++2sfz5y4itff8gU2v+7Gib5+fwF1C6/AWXUDHfE5DESny2qiAJVBlVpPK9HTD9DRspNUMjmtnyRJhMNhknnOmbxyCC8gGsIMmzAxMTExMTH5m0VRFO6993WUlz/Lxo2T05aDB8HhuAHDqKe42IskzScS8bJsWX5TkdZWAavVS1HRQvxTXVBMTExMXiKKojAy0g+k0HUNTdPRNBVVVXG7NQoKwOvNipmS1ITfn7V1NgyDgYHtlJdPio+9vW4qKzfkXD+TyTA6+iDl5ZM5rp2dTmpqbsBiyV28t7bupr5+f06U1smTS2lqujzv2CUpxfDwV3OE0f37K/D7L6Wk5L8omGJavW1bBZs2fS0nIuuBB97LzTcf4qc/beY975kscnj4sEBZWS+lpeXn/gBNTEwuKAN9vTx153Le7BnJae+U4KGl7+LyxAmWeXI3bdIaPORcwLWf+z5enw8plWLXj7/Ggmgru2S4bfp+zQRHRi1ExEI21k/OwSQNWvwhVmyuJBoVkKTVlJXl3yhRVZW2g89SGjlOwGGwfQA2NWU3tvPRG7PQlinjiqX7JtuGoajuP3BOCXFvPXWUGtdXcYzvHyUkGBP/k5qa+rMvOQ1FUejvbkGQ2igLKNhmGEtUglE5RGHFcnRNo6PtGHYxicemkFZFEoqLiuomKqtqznlPk/PmvJylzYhRExMTExMTk9cEW7d+hXh8X44oKstw+vQShoZCLFrkpacnwJw5DiwWjVQqf5V9SbKgqh5TFDUxMbmgaJrG0FAPihLD61Xw+RQURcLrTVNdrVFYmE2fb2+HkZGs6ZKiKPT399LSchBZVklls+5RFHA4pi/Ye3sP5Yii6TS43SumiaKSlMLrPZQjira2OqivXz/j+FtacqNFYzEoLb2BcPh/ckTRM2cEFi/+VI4o2tXVxpo1hzh6NMF11+U6vxw8eLspipqY/JUoq6jkugfb+ImaW6u41gV3Hr+b3b4mtsjFOeccItyuNLPv42+g9dgRXG43r/vo53jI2cRl1bPfb0mhzuFRgdSU8pvZmqMj7H6kl0xm/YyiKIDVamX+mitgxR08N+akPDizKApQ4dPRpZactuFwIEcUBejvfHhCFAU40eamuvr8othtNhs19UuomH8Tw/oqOkedpLXp/QpcUB8cId7zBJ3N21laPcySyhT1JQoLKmRW14RJDR+gvfXEed3X5MJhCqMmJiYmJiYmr3ra248zOvpD3va2XLORe+4pYPXqxSxaVMLJkxYWLcrO2GtqdHp7p1fPHxsDw3BTWzv/FRm3iYnJxUMymUBRUpSXG4DG2Fiaujqd4mJwOsHlgvJyqKnJio49PZ20te3Bam2mrm6U4mLo74fmZhgaslJUlFsSRJIk/P4zOW19fT5KSrLPvVQqxcGDz7Jjxxa2b/8NiYTG894gkgRu9+Zp6fZTrx0MHslpa20t5/TpR1i7NjXRpmnQ03MtxcW5Yzt48PNUVMD+/V2UT9FAn3tO5KabfvBCPkYTE5MLjL+ggHc8dIIfuNblGCoV2eEdzffQq1q5r/R1RM7yEtrkSWL91nt44pc/wjAMNBEKc/XGaQgCuF0arUXF08TRZZkReo4dPK8xB0PFeGqXUeI7d9+SotzNGMGRG9KqqioBZ/PEsW7AyZ4qdjy9nebm5vOuOS+KIhXVDdQuuYmY83I6Rv0kz5pqKgYMjMGKemNaZKkgwNzSDKmxNhIJ0wD0lSS/1aCJiYmJiYmJyasEVVV59tkPsHRpHy7XZPuOHQI33bSZ1lY/69ZZGR0tx+HI7gk7HJDJ5E50YzHo7vaxcOGqGcUBExMTkxdLJDJCUZGOzQZdXQq1tQaWPGEqNhu43TK6fpoFC3Ij273erIjZ0iJSUqJis9lQVRVFUejp2cPcuZPPtVQKAoGsI/yRI8+RSJxkwYI4wWC2pmlPDzz1FCxbBsPDxSxcON3dfmCgn+bmvQwMtNLYqFFUBEeOxDl1KoUsawQC3YTDEMxm/LN7dwHr17815xptbce59NIT7NsX48YbczevTp58B+vWFb2Yj9PExOQCYrfb+cAfdvLTD72ROzvuwzOuFLlFeH//w/w4PMjRd/8LwQe+xmLPZDhkncugbNcPuffoLmzVcwnLUDzdRH4CwwDRYWHZxgoOPw1zR4dxj0+5spGjz3FwG6zYfNM5x2wYBpk8kZlTGYop1NVPdpLSUFq5JqfPqZMHWVCfLRfwwGOjHGmOsXJhJ874g7Sc9vKn31Ry2ea3sWnzG845pucpLi6nuLicWDRMR88hAvYRgh6D/lGoKp49yrWhRKa9vZkly9bM3MnkgmLWGDUxMTExMTF5VfPgg19kbOw/ede7Jl0CYjHYuXMNRUXzWb68msOH7axatWBiIjo8DB0dfqqrHeg6xGJ27PZCamoaTVHUxMTkZaGzs5k5c1RkWWdsTKayMv/ySlGgrS3BggUzL79GRgRSqTqi0TEymRGcTgVVlclkslGnVVVw+nQh9fVX0dJyCEHYS1PTdGdkRcmKo4sX30ZZ2WQoZzKZ5PHHf0NJyRBLliRxOmH//jQ7d45w7bUKCxdmF/bDw7B9e1awXb0aUqnPMmdObjTWH/5wO6tWneShh07x0Y9Ohog99ZSNlStHcwyaTExM/vr86rMf45qd36b4LA/Knyq1XPqNBzn97U9xvXN02usejzvpKqvlvQtmvvbxUTgRqOaOd68EYNcjAyyTByfEUQBZg2bfWla87uYZr9PV1YyqPsXQKY31FTPf72BflBWrJ42NWjrsNK3+bE6pj6e3foGNy09y9x8GqS6JcuWl00st/X5rAHfp+7jhpjtnvtksSJLEwJnDDA52saYxa840Gwd7QqxY+7oXdS+THMwaoyYmJiYmJiavbTo6Wujr+w5vf3vugv+3vw2xYcNcfL4iEglIJktydud7erwsXrwRp3M5Xu9KGhvX0tCwwBRFTUxMXjYslqyYKMsGLtfMoufoqEIo9P/Zu+v4usrDj+Pfa8mNuzWNNU2b1J0qbaFocYeN4YyNDRn82NjYhm9jxnAdznAKFJeWCqWuaepp4+529fz+CCS5RBqgfj/v14vXizznOc95zoWc3Pu9j/Q9JiUoyKM9ezZo0KB8jR/fqOHD2zR6dHs46XJJ69dL8fFHyePxqKwsr8dQVGofnTp5srR7d25Hmcvl0gcfPKtjj83X1KnNCguT6urcysur1PXXuzR8eOdop7g46dxz20eMzp+f4hOKFhcX65pr5mjx4vl666081de7dPXV0muvfXv8F4SiwCHoJ3f+R1+f8w/l+85A1+W23drwy1kafutjejt2uhp992TScWFtOrpii95eU9Njuy1uaVGJdFRLobZtKFVxsU0jpl+q7THTfabV2y1STuMKrf3inW5tuFwu5ea+p7i4LzRokEfuQKmh+8pIHZw234NVdSHyejuDT5fLpdiwnSosdcnlbOwxFJWk806sU966//3gKe5BQUHKyJ6swOA+UlwcNASjAADgsOTxePTZZ5dq9uwKWbssDvThh2adf/5MLV4cqOzsYO3YYZdklvubN/DFxTYFBycrODhYUVFRioiIIBAFcABY5fFIFkv7Wpy9aW31KjS09+OStGVLiyZNcikkxLfcZJIyMqSgILNaWppUWlqi5OTGPtsKDZUcjoqOnzdtWqUJEyrUNbP8/PM6nX2222ezpq4mT5Y8Hq8839zYp59+rBtvHKe//OVzPfCAUzff7NUf/yg9/nj7VNqf/9ysM8/8a983CeCgOfWam1R4w6ta3+QbGZ0XWqO8i0do2BmXaf2Jv1Ves+/xrBDpeFeFnvq0SDWt7V/wVDV79N52px5f79F5WVJqmGRbvFJNtRkKCwvX6KNP6lc4WllZqt27n9Pw4QUdSydNnCqtqJRKGtqfLd9yeKSvdhsamOSb3sYGGdq+8gXV1lZJkvI2fa2hGW7N/6xKZx//naT3O06fVaIP57/Sr9evNzHxyapo6DuGa3FI1kC+NDqQCEYBAMBh6YMP7lNo6CoN7TJrs7xcCgubppqaQEVGxuvDD6VhwyIVE+NVcbFHGzYEq6EhXUOGjDp4HQfgl8LDY9XQIAUHW9TU1PvsPovF1LEpUk8aGjwKDvYoMLD3OhkZXhUVbVNLS4NCQ/torOOa7o5RVIWFG5Se7hsQtLY6FB7edxsjRlTq008/0F13XaxHHz1Pzz5b0bH26LdMJun886WcHJtWr/56r/0CcPAcffp50t8WalGD75z6E8NbVXvtRAWGRij0tlf0cWukz/EQi3RlVJNe/XSHrn2nSM99XaCGigLZ6/P1xKICbSxpUUaYIWPBv1VWXChJfYajaz6fp23blspqfVtZWb4jQM1mKSElWpUhk/RlSbwWF0dqcXGUVtZlyBORruT4zrqlVVJaQpCyE5vlKXpN23OXqa78Y1nMUkuLU9G+t9HNkAxDBXs2fd+X0UfSgIEqqglRXyta7qywKyOzj/UIsM8RjAIAgMPOnj3btWfPP3Thhb7DrubNS9bUqSkqK4vQ1KkWmUwmORyGTCaTqqrSNWTIHOXkjPVZWwoADoSwsHA1Ntrl8UiBgVbV1/dcLy7OprKy3p9R1dUuJSb2PN3zWzabZDK1yG4PU0tLL8M8u/B6rTJ/sxOUxeL0WXrE65UCAva+3URLS4O+/vo/mjt3lWbObFZwHxuwXHONQ6++yohR4FA3esoMDfzver3X6DuMfXKYW6F3nKSty77UrIc+0FsRk9TU5S3ZghrJFuTRfyY16aYRDv1ksFu/GO7WzSNa9NWWEi3e2aDsCLfK3vyzaqvbR2+OPvok7eghHB3WtFJNBV8qKsr3OVRVZdLu3eM1YsQFGj12omaddK5mnPQTzTjpIk2ffbJCAip86pdXWhX0zVbwsWGGBlhXKSlytyTJa+z9fWH7gPgfF6HZbDalZo7WhsIgub7zWDUMaXt5oIKjsxS6t2kD2KcIRgEAwGHF4/Hovfcu1Omn+65h9dprVv3sZ9O0fLlFEye2D1OaOtXQ6tWNqqsL1YgR42S32w9GlwFAFotFSUnpqqgIltVqV02NRRUV8hkd6nJJNTU2tbWFqKWl53a8fWeiPgYMGKCior6Hera2SjZbbJf2fT8ims2S07n30ODTTyv1hz/U6uuv63XSSX1vFW23SxZL0V7bBHDwDRqSrclv7NBLrQk+5TkhhrKfukLP3XGjUk47Q/OzT9D2FpMa3dKKNunKUZL1O4mTzSJdPcytJdsr1eL0akykQ9te/IMaG9uX/BjVWzja3Ky1X3R+m7R9e5DM5nOUlTW5xy+7DcNQkNX3GdPYFOTz87bd5cpKb08nkxODtGNP36/DsnUBGjfhuL4r9UNC4gClDJmiDUXx2lgUrJ0VAdpcbNeqgmgFx49VZhajRQ80glEAAHDYaGtr07/+dbFSUtYqJaWzPD9fio2dJafTqri42I41R8PDpbY2j6QYBfY17xQADgCbzaaUlEyFhmbIbk9Qc3OUdu2yKz8/SPn5wSoujlJERLZyciZo165IVVaafILQ1lapoSFEVVV9r4vs9Upud6CsVquio7OUnx/Qa71Vq8KUkzOpoyw8PE3V39lwOigoUA0NvV+vtNStAQPcstnaA4n+DMpn4D5w+IhLSNAZ83fqSWX7lA+0S+etfFS5r/5V5/9qtGy/vUQPlll09tBeGlL77/4ZaS59kFcrSToqqknrnrlVbW1tkqScKXO0XAN6mFbfrJWf1Cs3d5DS0y9WdHR8T81LkqqqKpSa2DntvtUppY+4ULmVqR3tNjnLO46fcmy0np8X0OsUd7db+vTrZM2Y+eODUUmKjo7V+KNmafDIYxWdNlNpw47VxClzlJycuk/ax/dj3XsVAACAg8/hcOihh36vwMD3dfrpnUmB1yt99tkgGUa8mpoCddppviMC6uutOuaYow90dwGgV8HBwQoO7vsD8NChY1RVVaGtW0tkMrklmWSzhSk7e5A2bVoil6tWve0bV1JiUWJihiRpxIgJWrOmTVVVO5ST06LQ0PYpm2VlZuXlhSk7e6YiIyM7zh03bqa++GKrTj21Rt/Mrtexx0bqrbfadPHFPW/A9PHH0ujRTknSUUdFaMGCSmVl9T5q1OWSHI6EXo8DOPSEhITo0nc26PGL5+iyukUK+Ob5EGmTLti4UE9cUq0rn/m9rIOTNTiyoM+2cqKlDza1SIqRJM2IrNWCp/6o4efdqPr6DzX7TGnDolANrm5S8DfPObtFGtnarLxyp2zD+/5yqLRwlUZ1ecTuKbFp6PhUmVLSVFSwXYVFn2jggM5h+eFhFiUnZOqWv62Wu61Uhtcpk8mQy23TCbPjtTE/Wxdc8mdZrfs2QgsKClJQUNDeK2K/YsQoAAA45LW1tenDD1+TYbyriy7yHbb03HOBuuyySfrZz6Tyct8hSJWVUlLSCIV8d+tmADjE2Ww2JSUlKydnorKzpyg7e7IyM4crKChIgweP14YNwT1u0lRVZVZFRbySk9MkSSaTSePHz9CQIWcpN3eYFi9O1pIlKaqpmazp08/TgAEpPueHhYVp7Niz9M47MSr/ZkBVXJxVU6fG6uGHA5Sba+oYVVVZKb3+epRaWiaora19VOqECSFavjxQTmfv9/a//4XqzDN/86NfIwAHls1m09X/W6jnM89XY5c92uwW6arKjXr6zN/K4977msSS1Oj2fc82O7xEa16/U5mZ7SNHRx0drh0xoXvdrb4nnratPj+3OJM7ptwPTM1SjSdJGcmdxwtKpbwtGxURuF23/6pe9/+hVf/+fZv++dtGlZQUqqTCouzsEf26Lxx+TEZf22H56ndFAACAH8vj8Wj+/P9p48YPFRFRp8rKUk2duk4nntj5lmTTJikw8CRlZbWvKfrWW1bNmpWk6Oj2IU3z50dq5sxrFBYWdlDuAQD2l7q6Wu3cuU52e5MiIhxyu82qrg5SSEiSsrJGytLT0M7voaWlRWvXLlVt7S6ZTF4Zhl2DBk1QdXWp8vPXyGQyFBaWqKOPPl2hoaH6978v1G9/u1uStGlTix5+eJf+9S+nvjsY6rPPgvTZZ2fqL395kY3wgMNURUWF3v3X1Tpl5TtK/M5KRY9Wh2jo+FRtLa5TRaNTieGBOndsrKKDO0dbbq2VFsWfq1mWzcqK6Bxd7vZKi0xRmv2zHJlMUk2NSRuX2DXRs7Nj5KgktXmkvLBJGnvM6d365nA4VLHjLqUkdL5f3FJxmrKHHdXx8+KPbtKMMWUdP9//VIVMjoW6/hK3erJwuV0bym/Sdb+5u9+vEQ4J/fojQzAKAAAOOR6PR3//+41KS1ug3NxSNTe7VV3drL//3a2Eb2ZfOp3Sa6/l6Kc/Hdtx3oYNkmEkaNiwIC1ZEqa4uDkaMWLCQboLANj/mpub1dTUJLPZrMjISNl6m1+/nz3zzH2aPPlN5eS0Bwtbt7bqwQeLFBnZpmHD3Kqqsmj58oGaPv1yXXPNbYSiwGGsrKxMHs9ibfj4Qw1+/hllBbeXu73Snbulept05UhpYKhU0Cj9b1eAgkPD9IfjU2Uxm3TXCun8O59XXXWhkja8oJQum7A7PdLXofFKGjNCUVFzFRubqPWLPlRW9ZJ+haPbt69XZuRrMn/ziCmrkiLSbuuYst7Q0KDG3b9QcpclSs+6/Eu9/u/iHpcK+dYv7h6mh57e8KO/dMIB1a8/NKwxCgAADjnPPPNvbdr0rEJCWnTTTR5FRko7d0oPPigFBkp/+IP00EN23XDDGJ/znE5p48YwFRSka/ToWUpNzTgo/QeAAyUkJOSQWC7k4ot/o3/8o0iVlSs1fbpTQ4cG6aGHslRc7NLzz1vl9R6jF164T2Yzq7kBh7vw8HDt3Bmkky4/UV8lxajh3n9pfJhXv9slnT9ampjUWTfKLo2Oc+qrsmr9fr5X2YMzNCVJ2vHULzT5D2erzJ6lilXbFf9NuBpgkcY3VGjdliBlnZooSRp99Elav0g+4WjntHr5hKONVWtkjuq8fnlthBKzO4eub97wsSYP7jy+YatbKYmNfYaikjR5xG6tXr1akyZN6rsiDjsEowAA4JDidDr16qt/0fPPNyqpyxvrwYOlu++WFiyQbrhBCg3NkWH4fhGclxers876jSIiIg5spwHAz1mtVt1yy/364ov39de/vqXAwHp5vSZ5vQk64YRLNG7cUXtvBMBhITg4WC5XmJzOFk09aaJy4+7Uf6/+swbEenxC0a6mJkofFDQqyuLQnJRASc166+GPdeZtJ2tds0sB23Yr8ptp+SE2aXjZ+1qzMFLjZp0sqf/hqN1a6HNdw5rl87OnaYnPz7tKEhQV1rbXe44Ka9OmNV9o7NixB21kPvYPglEAAHBIeeGFx/WrX9X5hKJdzZ4tvfOOWUOGSHv2ODRoUPu76MpKyWbLIhQFgIPEbDZrzpxTNWfOqQe7KwD2syFDxmn9+sUaM6ZJwydk6YlhY3R78Oo+z7luhFsP7SzVGUPTJUknWcv12StrNOuc8fp4j1WzXTsU8k3mGBkoDdzyknJDIjR84jRJfYeji+c71Oj2yt3sUOFuacQwKSZaih8wvuP6NdXVykqp6vjZa0iGbaQqa/Y+4zpvR4jOP92p3WufU2TaSYpLSN7rOTg8MI8BAAAcUpYte0mnnOLts87VV3u1alWZPJ72JdALCkx6883BOuOMKw9EFwEAAPxaaGiYcnJmaMOGeOXmBsnV5FCUve9z4oOl0sbObeaDrFL2lvVa+JFdJ//0z1odPksOj2/98JWPaufmDR1lo48+SdtjpnfsVu/ySgtLJXf1ek2P2KjTBkkzE6XCzdLb802KiIzpOHfLpvcV3/mjtu22yOLeoIjwYFVU995vj0fKL45T+sAYZcU7FFAzT3nrvpDL5er9JBw2CEYBAMAhJSTEvdd1nrKypPx8p1asSNTTT6do48a5uuyy38tu38s7cgAAAOwToaFhGj9+ltLTj5HHFCtP399ry+2VnNExqnd0lqWESmFLnlZ9Xa1mnHOlllrGyO3tetyQ8cU/VLR7Z0dZ13D08xJpZJo0e4gU/s3bQLtVmjxQmjvY0EfzXpTX296gqW25T39K69IVF7JKv75soK6/26aW1u599nqlm/8WqSvP71zHNCJIGhqRp12rX1RNVUX/XiwcsghGAQDAIcXjCdxrnYoKKSQkVWed9Q9dfvlfNHfuhQoM3Pt5AAAA2LcMw9CQSVP1QXHfa2++uVM686pZ+syeLq/RWT451qFFf79cXq9Xs356kxY4BvucNzjco/p371JlWWlH2eijT9K64AkKDJSSI3u+XrhdGhpaph3b8lReVqrsjLqOY26PVNeUpAnDnUpKsGnciAD9+k7pkZekghKppFx65YMQXXn7SM0563FFJIzwadtskoYmtkjlb2jrxsUd4SsOPwSjAADgkDJq1GlasaLvtyiPPhqo3/3uKQUFBclk2vu6UAAAANj3SkuLtXr127r8mgS9Xh/XMcX9u5qc0vv5UuHrH2v0Gbdpfs0An+OnRhVp/kO3yWw2a9blt2lBo+/x4ZEuFb56m+pqazvKHLJofHrf/cuOdWrbxhXakTdfUeGd5Xm7rLK4l8tmk7xeQ8MyW/T0X6QpY6TXP5R+/+BQxeW8rqdfWq+5p5yn9PEXK692iBq+s09TdIihzNAN2rriRdXX1QqHH4JRAABwSLnoomv18MNZcjh6Pr5rl1RVNUPjxo07sB0DAABAB4fDoS1bFmjGjAZFRVl0+xNX6pdbErW6svNLa8OQVpRJ134p3TVZ+mV8qb544I+aetPTWlEV0FHPbJJmNnyiZR+9JZvNpilX3KXFddE+1xsX1aa8529Vc3OzJKm6qrRj+nxvrGbJ5HXK4l7lU15en6nU2M2SpGWr63XslPYhrGOHS5eeJd3yp1d17HEndXwBb7PZlDP2OLVFnKadlQG+1zBJOYmNcha+ou15K2QYhnD4MH2P/2D8lwUAAAfEli2b9Je/nKNrrtmhyZM9Mpkkp1N6661gffrpeD3wwIcKCQk52N0EAADwWxs3rlRCwkrFx3fGRU1NDr30xEJtWLhRAV6XKuoNDXKU6Hfj1bHjfItLeiftRo2ac64i3/uVkkM729xSZ1bwFS8rdVCWmhoblfvfm3VUVJPPdb+ojlTotExVl1Xr6AgpxDen9OE1pFfy4nTqrJUK++ato9Mlvbt0vM6Z9pIk6dlXtunSMzuv8cYnUTrnlzW9tulyubRt/SdKD9utkO+s5OQypG3lUUobfopCw8J7bgAHSr+mlRGMAgCAQ1JLS4teffVxrVkzT1arU15vuE499Todc8xJMpuZ9AIAAHAwLV78tmbMKOmzjssl/feBIs3Z8FdlRnSWl7dIa2c/IrPXraOLnpXd2nnss8pwTbvjAwUFBam2ukp7XrpFYyJ9pxJ90RSgnDMGaNcSaVpK79ffXiWtrqzTBSfXdZSt3RKg4tJGnTI9X263oS++XKfjp3dGXi8uuEw/veq/e73/ksKdcpZ/rvTY7usHlNZZ1BYyRRlZoyVJTqdTzc3NCggI4Mv9A4dgFAAAAAAAAPtef4JRw5CWLElX3bYtmvr1zYoJ6jyWV2tS45UfqujLV3RW0Aaf895qGaEz//SsTCaTNqxdLuviBzUssjOW8hrSF067WsITNSNOigpSN21u6b08KT2jQBNHdm6O9OHyYcqKeUuD06QFS2s1fXS+bN+MZi2rlJritmjw4KH9eg3a2tq0c+OHGhRZoqDv7D3l9EgbiqPV7AqR1VuvMLtLDrdZTc5QpQ8eqYzM/l0DP1i/glGGWwAAAAAAAOB7MZvtva4J/63aWik8PEanXnGT3k++Sm3uzmM5UYZcj56q7DOu06eVET7nzQ3YpLcevUtr1vxHg7LeVejcBOU3drm2SZppbZNqqjR/Z7jWlgXK5Wk/5jWkLZXSe1uk7FSHhmd1hqKtDqmpyavBae0/7yms6AhFJenL1XH9DkUlyW63a/jEM1VpPUaFNRafY/UtUlNDjSanFWpaVoNGpbRqYkazZg0pV2vZYq1fs6zf18H+QzAKAAAAAACA7yUra6y2bet796MtW8I0ZEj7dPKL//y4nvPO9jk+Ld6lHXfOVML5f1NeXWewGGiVppS/I5snV6GhUmqmXa6jE1TS3HmuzSIdb29SRmy8IkddqE/Kh+r9wnR9UDxYFaFTNXm4SXWt9Qru0sVN28wKMS2RJDmdXqUldWlQkif43B/yUig1I0ex2T9TblmcnJ72kbIb8qVpw9vvpSuTSRqW7JC7Pk+VlZU/6HrYd5hKDwAAAAAAgO9tyZKPNHjwbiUmerod2749QC0tIzV69OSOMpfLped+NkJXxm3zqftsWYpiTv+Dpu96QlFdgsyVVWZl3Hy0YuPaCxe816yRJZWK7TJ1vskpbU49W5OOP8unzaKCnarY/meNG94ZZ73zkVWTRm1SUpz0yZfVOnbiHlm+yWMLSyUjNV+paek/8NVol799vZpLv5LV4lV2cu/12lzS6pJMTZt54o+6HnrFVHoAAAAAAADsH1OmHKfCwqFaujRCJSUm1dZKBQUWLVoUJYdjjE8oKkk2m03nPbZCr5dE+5Rfmliowo/u0JfhifJ0znzXxFivlv3ja23fbtbatUdpynF/1e7B56uhyxT+0AApa8+bWr/0U582W1ubNXxIZyja1Co5W2uUFNf+c0lpRUcoKkmL1w340aGoJGVkjVajebBS4/uuZ7dJXlfDj74efhyCUQAAAAAAAHxvFotFEyfO1vjx56ixcaaKiibK5TpGU6acqxEjJvZ4TnhEhKb8a7U+Kw30Kb8qvFRVhfmaXxfsU35qbJs2zmvS2LGnyW63a8Kxp2ljwolq7bJeaVSglLDxWW1Zt6KjrHTP+wrssn7o5m0WRUVVSJJa27zKSm31vZfwi37IS9AjqzVgn7WF/YtgFAAAAAAAAD+Y3W7X0KHDNXLkJGVmDpHNZuu1bllZscor31fItedrXXXnbGebRTqvKU8NkW59VeG7kdEcxyItmf9Kx8/TTrtYy4Omdmy4JEmJwVLQ0geVv22zKisr5WndosaWzuObtpo0aXR7mrpgabWmje88trNAmnn8b37g3XeXkJSq4uq+w1GHR5IlZJ9dEz8MwSgAAAAAAAD2q4qKYq1e/bCCgh7R+PElmjJroOrOO00FXXabDw+QZm39WtsST1BhU5fyQClh2T+Vvz2vo2zmBb/UIo2Qt8uOODVtXr3/33u08PlbZZS49eE86Zn/SbnbpZDwYIWHttf77qZHi9ckKjEpaZ/d68CUNBXUhsnTx249W4rtGpIzbp9dEz8MwSgAAAAAAAD2i4qKUq1a9YgCAtoD0YiIzmOzTh+uleOmq77LmqEpodK4Nffqk8DZPtPlsyK92vPkNWpuak9MTSaTZv3sFi1oSZckfVos1dqka2dJ545o1TGDpPOGSz8dKi370qQBEeskSY1NHg3LbPPpo1mDtXndon12z2azWcPGzNBX28Lk6iEc3VkZIGfAYCUk7rswFj8Mu9IDAAAAAADge3M6naqurpbJZFJMTIzPFPrKylLt2TNPmZlFiorq+fyCAouqq0dp5Yuv6bK212XrMoP+i7JA7Uw9Q1clbPc55+2mbJ1x+4symdqn4btcLn14/81yuqt0Ti8DMNcUNGn4MUUKDJDe+bhcp88q7ji2eYcUH3m9AoNClO+coVET990u8ZWVFcpbv0x2S50i7E453BZVN4cqKWWosoeP3mfXQY/6tSs9wSgAAAAAAAD6rbW1VUuWzJfDUaTExCYZhkmlpaEKC0tXdvZ4FRfP70cgOlLZ2XMVFBQswzD0xBVT9fPQr33qvVESJfOAkTorpXNevcsjfRZ/gU66/P86yv73zIM6OfprRdh7vt57u/bo1FPaN1t6/tVc/eyMziGqL7wdpYtP+0X7fTmlvIYJGjv1jI7gdV9obm5WY2OjAgMDFRkZuU/bRq/69SJb93cvAAAAAAAAcGRobW3V/Pn/1Zw5Jd8JPltVUVGphQtX6swzpZ72XyostKiqaqSGDj1ZqamdGw+ZTCZd+uhCPXvxEF2aWNBRfs6AWj1eskdr7LEaF9c+Xs9mkcYWvqJ1X03QmKmzJUnNNcWKGNBzf51uQwPS20PR2jq3Rmc7fI7b7Z0jN4MCpOGRq7TqyxZNmHnRPgswQ0JCFBLCRkuHIkaMAgAAAAAAoF8+/vg1HXXUekVG9ny8rEzaulWaObOzrKjIrIqKkRo6dG6fAWFNdbUW/XyQzhjQ4FP+97KRunS4VXHBnUHl2mqr6o+/RdaARdq+qkqX5fTc5le76jT55DKZzdJbH5TprGNLOo6tyzOpIeB5TRyQp6Aum8i7vNKa4kGaMPtSWSyWHlrFYaBfqTabLwEAAAAAAGCvHA6H3O6iXkNRSUpMlOrqJI+nPRBds2akoqJ+p3HjztvrqMnomBiN/usKLSn3HW56XdxGPbZJcns7y8bGuNX08X066qhKhURL9W3qUbWlVuZv0q+W5iqfY+t35ejoE36q7W1Hq7HL+TazNHHgLq364jG5XK4++4zDG8EoAAAAAAAA9qqyslIDBjTttV5UlLRs2VBFRf1W48Zd8L2mkWcMHqqgX3+ozbWdA/4CLdK1UWt195Jan7qnxLo1//5iHX289Fl+97Ya27zKGto+db6y2qnxw50+x6NTrpEkjZp4goqME1Xb0nnMbJKOSi3RugUPyeHwnX6PIwfBKAAAAAAAAPaq/2tuhmr48FMVEhL6g64zfvqxKpr7mMqaO8ui7dLF0fl6am2dT93jXE3auqxGrRFmfbrDqq4rRq4oqFH2oPZ/X7i0UjmZXY5tMOuYEy7v+DlnzAxV2c9QZYPvPU5Mq9LmRf9RS3OzcOQhGAUAAAAAAMBexcXFqbg4bK/1amtDFB4e/oOv09jYoJAUq16LGq7mLjPZMyOk0Ua+Pt/VGVKG2qSBqys1YcJvFDX+Sj2dl6n3tkdq4e5g1QQ0dtRzOmt8rrF6S3q3kaxZORPVFH2hSmt947KxqfXauex+NTb4rn2Kwx/BKAAAAAAAAPYqICBAgYEpqq3tvU5JiUXR0Vk/aNOigoLt+vLLu1Rd/UtNm/a5rvvHaL0ckCxPl7VFJ8YZaivbrl3VndPiMyMMVb5wnYYOG60rb7xTk8+/XRGTfqEp49qnwJeUOTRlTGfC6vVKcUGxWv7l6936kJE5XN4Bl6qgyupTPjKlRUWr71dtbVW3c3D4IhgFAAAAAABAv8yYcYo+/3ygqnrIB0tLLVq+PFWTJ8/pd3tut1tr136uJUuuV2Tk7Zo5c4vS0zvnw1/+rxl6uj7S55y5KV4tXL9TzU5PZ7/iWvTZ36+S1+tVXFycygs+08DE9mOLvq7UoJTO879aI50yNUMjAudp8Uf/ldF1/r2k5NRMBQ66SjvLfcPRnAEOVW18UBVlxf2+PxzaTN/9j9+HflcEAAAAAADAkcnhcGjp0g/V1LRb8fEtMgyTKitDFBk5WFOmHCebzbbXNhobG7RhwxsKDl6ikSMdslp7rtfcLC1fHqKCB97Qpam+Q1X/mRuqG47PksXcvi6oyyN9En2m5l59mz597VgdN6VOkvTKWxt0wVx3x3nPvh6tS086UZLU5pKWlU7UrFOv77aGak11pSo2PKrsAb6bL+2pssqaeqmSUzL2ep84aPq1IC7BKAAAAAAAAL43l8ul+vp6mUwmRUZG9mv6fEHBduXnv6L09K1KS+s9aioulnbuHKTk5AuUmTlcFeVlWv2rTJ2U1Ll1vNeQ/rklQjcfN0gmk0mVrdIrO6WygDhFBFXKY5LiBrTpxGmbO0aPut3Sx59P0dxpnaGmyyst2pWjmWf8TtbvJLQNDXUqWPWwRiS3+JQX15rlSbhIqRk5/XmpcOARjAIAAAAAAGD/2707XyUlu2Wz2TVs2CifjY3cbrc2blyo5ub3NGpUlXrbl8nrlXJzraqrm6wRI85XVFS0z/FtuetVd/d4TYrrnELf4pJeLonT+OwUfVQmXTpNSvqmfcOQHli2R9dfV91Rf8Fyq8zRT2ls5CcKD+pybUNasD1VM864QwEBAT7XbW5u1ravHtTY1Eaf8ooGkxrCztLg7HHf45XCAUIwCgAAAAAAgP1n+/bNWrjwZWVkVCo9vUkOh0nr18fJbB6sOXPO09at7yo4eKlGjXKotwGlzc3S+vWRCgg4WaNHH9/nVPxln76r+BdPV2ZEZ1l5i3TPnoG6//J4mb8Th71Wsl7nndYZpD77wQxdet0irVr6ntK9ryg2zLf+l9viNemUexQUHOxT3tbWpo2LHtHEtGqf8tpmqcx6snJGTev9RcLBQDAKAAAAAACA/WPr1k1avfoxXXBBrczf2d67pER6803pmmuk3nLO9unymUpOPl+ZmcP7fd33/vsvTVl2k2K7jPjcUis1ZGZqUnZnYrqtrFURk/OUENv+s9MpLSt/WzNnnyFJ2rhmoWLqn9KAKN/I66vtERpx/L0Kj4j0KXe5XFq38HFNTC31KW9olfa4ZmnkxOPkcrnkdrsVEBDQr6UFsN8QjAIAAAAAAGDfMwxDTz11m664Yne3UPRbmzdL1dXSjBmdZV6vtGmTVfX1kzVixAWKiora67VaW1tVXFykyso8NTRslsuVr3Vvf6SbAwtk77Ik6NIyKXFqjjIT2xPTF9fv1k+vqOk4/uEii46/xOETWG7PWy1r4f3KiPf6XHNVfrDSp9+t2LgEn3K32601C5/RuIG7Ze0SvW0rkVbuilBUmEmBNkPNDpuCwgfqqOknKLy3tQOwPxGMAgAAAAAAYN/asiVPixfPV0PDYp13nl0pKT0PCTUM6b//la64onO6fGDgKRo1ak636fKNjY0qKtqtqqrNamraIo9nj2y2MoWG1ik+3qGBA6WgoK5tG3riF9v184Amn3be2WPW9LnDFRNu05vl63X23M5p9Hc9Nkh//MfObv3ck79FrXl/UfYAt0/5xoIAxY6/XUnJaT7lXq9Xq798SWMStshmkdbukhpbpSk5kq1LSNzYJn22KVbTj/+p4uLi+nxNsc8RjAIAAAAAAGDf2L49T6+8cq+ys4s0blyDvF5p6VKrSkoCdNVVAxQXZ+12zjPPSJmZg5WcfJ6iopJUVLRLNTWb1NKyTYZRoICACoWH1ysx0a0BA3qfdt8Tl8vQcz/brCvjHB1lTo900wqzGgMDFRrTqqAQ6fxzpOFDpN/+a5b+9cSn3Xael6TS4gJVrr5do1IdPuXbSq2yDfmdMjJ9d583DENrl76pJOtabdwtHT+25z463dJ76wforAt/KZOpX1kd9g2CUQAAAAAAAPx4u3Zt16uv3qibby7tFl42Nkr/+EeArrsuVS6XVFraptraNrW2tqm21lBiok2RkY0aMMCjxET1OvX+h6ipduuDy3L103SPttdJd62XLpkuHTNUMpmkJof00jrps0Lpsd+O1rLdyZp41pNKSBzQra3qqkrtWvR7TRzU4lO+u9Isx4DrNHT4xG7nvPbCAzpxZLnPDvfftSbfrpihP1VaRsaPvFt8DwSjAAAAAAAA+PH+8pef66abVikgQGps9MjlMhQZaZH5m23gKyulJ56Qrr5a2tezxltb2zdqqqgIUGNjpFyuRFksaQoNHaqYmBGS19C2W8fq7SKvHr9Ysvcw6nR9sfS/XZH66/WDtHGPVc0Df6/JR5/erV5DQ702fvx7Tcuq8ykvrTWpMuwKjZow26d8/uuP6pRRRX32v9kpLS+ZoGNOOPN73zt+sH4Fo93HDgMAAAAAAADfqKysVEzMbr35ZqUWLKhWfLxLAQFSSYlF6elh+tWvBiguziKrVYqM/GHXaGyUioqkqiq7mpqi5fEMkM2WrrCwHMXFDdPAgSkaPLh9WKbH41FdXd03/9SqoaFY7wZP1q/nfNVjKCpJo5OlNzc3q7TKpZFpUn3LnXr76QWae/F9CggI6KgXHh6hcXP/rgXv3abZQ8s7ypOiDAU0PqWVSxo0cXpnoGoy7X0cocUkebzevdbDgceIUQAAAAAAAPRq1apVeuSRE3XqqbU64wyvui6VuXWrdM89QXrwwSF6+22LTjlFio3tuZ3qaqm42KSqqmDV1kaqsTFKTme8TKZYBQdbZLc75PFUyeWqlNdbLcOoldncIKu1UTZbi4KCWhUU5FRYmEdRUe0hbGSkZLFI154rPXx03/extVz6qDZB11+U3FH28YYoDTv5caWkZfrUdblc+vLt23VM1m6Zu9xvQ6u0selETTvuYknS+28/rzlDtiqwj6GHW0uscseeoeEje1mIFPsDI0YBAAAAAADw4yxd+rGOO65WZ57ZfdTj0KHSX/7Sql//eruSkqLkdLrV1uaR223IZDIpMFAKDDQUFORRSIhLwcFOhYa6lJiojnAzqI/1OfsroB8x2IAIqWKny6fshFG12rr8Ai3acr2OPuGnHeU2m02zz75TC+b9VUenb5bN0l4eHiSNs36khfMbNHPuLzVq/Eyt3VigyYNbe7ymYUiby6J06oyRP/jesP8QjAIAAAAAAKBXubnv6de/7n0qeHKylJTUot/9rkVRUQewY1041R5C9rXxe36N1BY2TfkVJcqI75wYPTTZq4Ft/9Zbj3+pk372gIK+SWotFouOOev3Wvjeg5qStLxjmn6QTZqW9JW+mNeoWaf9n7bkZmtHea4GJzh9rmcY0uebwzR87BxZrURwh6J9uA8YAAAAAAAAjiRut1thYaV73Un+mGOkZcsOTJ9aWqSSEik3V/rqK+mTTwIUnBSgL3f1fd4La6WswQnyDH9GX+SG+hwLsUtnjVijZS+cqO1bN3aUm0wmzT7tOq2qnaPGts76Nos0K32jFr51h2bNOV2Vpql6d22C1u8J0PYS6attIZq3LkWZo8/SkOwR+/L2sQ+xxigAAAAAAAB65HQ6ddttg3XffYV91vviC6mpSTrttL236XZLdXXt/9TWSk1NFrW0BKqtzS6XK0QuV5gMI1xStCyWaNlscQoMTFRQUJJCQpIVERGvqKgoRUZGKjg4WCaTSW1tbbrqzKP04KwNigzufs3FO6WF5dIN50hvFV6h837+oD564Todn7lGIXbfuvkVJu0wXa45p/9Cpi5DUFcsektZ5jcV5ZupasHWJE05/W5ZrVYVFRXJ0damqOhoxcfH7/3FwP7SrzVGCUYBAAAAAADQq6uvHqsnnljXZ53bbpPS0kIVHh4qtztUXm+4DCNSZnO0rNY4BQTEy25PVHBwssLDBygysj3YjIiIkMVi2Sf9LC0t1e9/frqOiduic4c3ym6Tiuukp1ZKrgDpzssks1lqbpNe3XGRLrv5RS3+5CUl1P9HQ5N9lwpwuKQP8rI15yePKiw8vKN8/cpPldD8rBIjfa+9eHuUxp74F4WGhe2Te8GPRjAKAAAAAACAH+eRR+7W+PG366ijPD0eb2mRbr55lh55ZMEB7ll3hmFoyZcL9O7/HpHb0aLoxDRFhDp08ZBnFNUls2xzSi9uPktX/O4NFRXsUu4HP9eJo2q7tbd0i11RE/+lYaOO6ijL2/i1QsoeVmqcb5i6fGeoBkz6g3ZsWa+GumpFRMdr4uSZCgkJ2W/3i14RjAIAAAAAAODHcTqd+sUv5uiWW5Zq6FDfMLC5Wbruukz94Q8fa9CgzIPUw7179cnf6diwvyk2orPM6ZKeWX+SrvrDfLndbr3/wm91TOoiRXxnKn5JjbS2+VyddN4tMn+z2Oqu7Rvl2fEPZSW5JUluQ3rnK6nZIR09QooKlaobTFq2K05h8WN0ylkXd5yLA4JgFAAAAAAAAD9eW1ub7r33l6qrW6yjjy5UYKBbq1Ylqbo6Wzfd9LgyMgYd7C7u1VvP3alptj8rIaqzzOWW/rv6GF35x09ksVi07Mt5Cin+i0aluX3OdXmk+RvTNPOCJxQdEytJKirYpbr1d2pEiksvLZQmZ0uZid2vm1ccoE31U3TuRVfvx7vDdxCMAgAAAAAAYN9paWnRqlWr5Ha7lZOTo6SkpIPdpe/l3Zfv03jvb5Uc01nm8UhPLp+qK//8paxWq8pKi7Xyras1d1SZvjvIc+UOmyzZd2vcUXMkSZUVpVr9wR9keBw6aXzv1317ZaSmn3G74uLi9sNdoQcEowAAAAAAAEBXH7zxoIY3X6e0LpvGe73Sk8vG6/I/L5PNZpPb7daH/7tDk2M/UFy47/mVDdJXlSdq7kV3yGq16oWn/qWzRqzutrt9V7VN0sLiY3Tm+Vfsn5vCd/UrGGVxAwAAAAAAAPiNk8/5tbZFPaldZZ1lZrP082mr9czt4+VwOGS1WnXqxXepKOY+rdxh8zk/Llw6NeMjffj4aSorLZaM1j5DUal9zdGmhqr9cDf4MQhGAQAAAAAA4FeOO+1K7Ul8QVuLfAcWXj19o164Y7RaW1slSWMnHavMU+br7XXpcnk665nN0qljylW54ExVlhXIu5d51i6vZLLY+q6EA46p9AAAAAAAAPBLiz9/Q9Hbz9PwNN/Y679LMnT+7zcqJCREkuT1evXxG//QqKBXlRzt20Z9izRvRaguPD5ZAbaeZ3B/vd2ukCG/0sjRY/fLfaAb1hgFAAAAAAAA+vL1ovmybzpdYzK8PuXPLRmoM2/ZpPCIiI6yzRuWq3blbzQtu61bOx+tsWj4kBSlJNjldBkqq3HJZDYpOsym55el6+fX3yXzd3dzwv5CMAoAAAAAAADszeqvP5N3xYmamOXxKX/pq0SdfGOuoqI7h4k2NjTos5d+oZNztijwO7Pj1+6S5n1tV4jdq/Q4j5xuad2eIGWNOlGXX3OzbDam0x8gBKMAAAAAAABAf6xfvVgti4/RlKFun/JXv47Vsb/KVWxc5zb2hmHos3cf02Dv08qIb4/MGlulv78h/WKulPSd6fZ5hVa9vXm8bvnTA7Jarfv9XkAwCgAAAAAAAPRb7oYVqvl0hmYMc/qUv7k8UtOvyVVC4gCf8h3bNqpg4a90zPAmPfCudOFMKS5CPdq426rNxuU6/6c/31/dR6d+BaMsbAAAAAAAAABIGj5qkhJOXqEFGwN9ys8+qk7Ln8xWcdEen/LBQ0ZqysUf6ZW1Y+Ry9x6KStLIdLe2b1yg7zFIEfsZwSgAAAAAAADwjSE5o5V21lp9si7Ip/y0CY1a/9xw7dm9w6c8KChIQ6f9SiMz9j5FPiG0TnV1dfuyu/gRCEYBAAAAAACALgYNzlH2RRv1/poQn/KTxzVr6yujtGNbbrdzLJa9x2xmE6NFDyUEowAAAAAAAMB3pKZlauylm/XOynCf8uNHt6rwnfHaunldR9ngwYO1sSRur22WNkYqIqKP+fY4oAhGAQAAAAAAgB4MSE7V5Ku36M0VUT7ls0c4VPnhJOWuXy5JCgsLkxE8VNUNvbeVV2jRoGFHy2wmjjtU8F8CAAAAAAAA6EVCYpJmXbtVryzzHRE6fZhLjQuma92qRZKky395m+7/dLAqewhHd5Ra9MaGMTr3oqsPRJfRT6bvsRMWiyAAAAAAAADAL9XV1mr+v4brp1NLfcpX7bBIEz7UhCnHqaGhQc89/jc56nKVFVcrj2HS1vIYJaQdpYuvvFE2m+0g9d7vmPpViWAUAAAAAAAA2LvGhga9dd8IXTKt0Kd8fb5ZrSPmafLRp0qSWltbVVRUJLPZrNTUVALRA49gFAAAAAAAANiXmpub9eq9o3T59F0+5ZsLTKrOfFXJg8ZrS16u7EEhmjJlioKCgg5ST/0awSgAAAAAAACwr7W2turFu8fpqulbOsrW75L++ZaUlRauyZkNanZa9cW2DMVmzNKtdzzMqNEDi2AUAAAAAAAA2B8cDoeeu3OSrp6+QWt3Sk9/LP37aslm9a23cbdFD301W488+5EsFsvB6az/IRgFAAAAAAAA9heXy6X/3jFNK1au1OO/lqy95J4frwlQTeqDuvBidqU/QPoVjJr3dy8AAAAAAACAI5HNZtP40x/SiAxrr6GoJB0/1qkvP3zmwHUM/UIwCgAAAAAAAPxAG9Ys0ZxR7j7rmExSkKn6APUI/UUwCgAAAAAAAPxAVmuAnH3nopIkr9Gv2d04gAhGAQAAAAAAgB9o9vGn6/0NA/qs0+aUvIFpB6hH6C+CUQAAAAAAAOAHSklJUYVnuCrre6/z1OdROv+yWw9cp9AvBKMAAAAAAADAj3D731/WTa+M0s5S33KPR3r68wg5Eq/Q9KNnH5zOoVcmwzD6W7ffFQEAAAAAAAB/Ul9fr4f/+UcVbPlccSENanGa1axUnXHRjTpx7lkHu3v+pl8LuhKMAgAAAAAAAPuIYRhqbm5WQECAAgICDnZ3/BXBKAAAAAAAAAC/069glDVGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhGAQAAAAAAAPgdglEAAAAAAAAAfodgFAAAAAAAAIDfIRgFAAAAAAAA4HcIRgEAAAAAAAD4HYJRAAAAAAAAAH6HYBQAAAAAAACA3yEYBQAAAAAAAOB3CEYBAAAAAAAA+B2CUQAAAAAAAAB+h2AUAAAAAAAAgN8hGAUAAAAAAADgdwhG4ddmzZqlG264oePn9PR03X///f0+/9lnn1VkZGSfdW6//XaNGTPmB/UPAH4MnnEAjhQ8zwAcyXjGAQcPwSgOa5WVlfrFL36h1NRUBQYGKjExUSeccIKWLl16sLv2o2zbtk2nn366YmNjFR4erunTp2vBggUHu1sADrAj9Rm3Zs0aHXfccYqMjFRMTIyuvvpqNTU1HexuAdiPjtTn2T333KOpU6cqODi411CioKBAc+fOVXBwsOLj4/V///d/crvdB7ajAPYrf37GXXfddRo/frwCAwMJXnFYsh7sDgA/xtlnny2n06nnnntOgwYNUnl5uT7//HNVV1cf7K79KKeccoqysrL0xRdfKCgoSPfff79OOeUU7dy5U4mJiQe7ewAOkCPxGVdSUqI5c+bo/PPP10MPPaSGhgbdcMMNuvTSS/XGG28c7O4B2E+OxOeZJDmdTp177rmaMmWKnn766W7HPR6P5s6dq8TERH311VcqLS3Vz372M9lsNt17770HoccA9gd/fcZ96/LLL9fy5cu1YcOGA9g7YN9gxCgOW3V1dVq8eLH+9re/afbs2UpLS9OkSZN066236rTTTtPll1+uU045xeccl8ul+Pj4Ph/qXf3rX//SyJEjFRISopSUFP3yl7/scVTTvHnzlJWVJbvdrhNOOEGFhYV9tvvUU08pJydHdrtd2dnZeuSRRzqOVVVVafv27frd736nUaNGKSsrS3/961/V0tKiTZs29avfAA5/R+ozbv78+bLZbHr44Yc1dOhQTZw4UY899pjefPNN7dixo1/9BnB4OVKfZ5J0xx136MYbb9TIkSN7PP+TTz7R5s2b9eKLL2rMmDE66aSTdNddd+nhhx+W0+ns170BOLT58zNOkh544AFde+21GjRoUL/uBTjUEIzisBUaGqrQ0FDNmzdPDoej2/Err7xSH330kUpLSzvK5s+fr5aWFp1//vn9uobZbNYDDzyg3NxcPffcc/riiy90yy23+NRpaWnRPffco+eff15Lly5VXV2dLrjggl7bfOmll/SnP/1J99xzj/Ly8nTvvffqj3/8o5577jlJUkxMjIYOHarnn39ezc3NcrvdevzxxxUfH6/x48f3q98ADn9H6jPO4XAoICBAZnPnW5CgoCBJ0pIlS/rVbwCHlyP1edYfy5Yt08iRI5WQkNBRdsIJJ6ihoUG5ubn9bgfAocufn3HAEcEwjP7+Axxy3njjDSMqKsqw2+3G1KlTjVtvvdVYv359x/Fhw4YZf/vb3zp+PvXUU41LL7204+eZM2ca119/fcfPaWlpxr///e9er/f6668bMTExHT8/88wzhiTj66+/7ijLy8szJBnLly83DMMw/vznPxujR4/uOJ6ZmWm8/PLLPu3eddddxpQpUzp+LiwsNMaPH2+YTCbDYrEYSUlJxpo1a/b+ggA4ohyJz7hNmzYZVqvVuO+++wyHw2HU1NQYZ599tiHJuPfee/v3wgA47ByJz7OunnnmGSMiIqJb+VVXXWUcf/zxPmXNzc2GJOODDz7otf8ADi/++ozr6rvtA4eAfuWdjBjFYe3ss89WSUmJ3n33XZ144olauHChxo0bp2effVZS+7dzzzzzjCSpvLxcH374oS6//PJ+t//ZZ5/p2GOPVXJyssLCwnTxxRerurpaLS0tHXWsVqsmTpzY8XN2drYiIyOVl5fXrb3m5mbt3LlTV1xxRcc3i6Ghobr77ru1c+dOSe1fVlx77bWKj4/X4sWLtWLFCp1xxhk69dRTfb5lBHDkOxKfccOHD9dzzz2nf/7znwoODlZiYqIyMjKUkJDgM4oUwJHlSHyeAcC3eMYBhy8+geCwZ7fbddxxx+mPf/yjvvrqK1166aX685//LEn62c9+pl27dmnZsmV68cUXlZGRoRkzZvSr3d27d+uUU07RqFGj9Oabb2r16tV6+OGHJekHrwn17TowTz75pNatW9fxz6ZNm/T1119Lkr744gvNnz9fr7zyiqZNm6Zx48bpkUceUVBQENMaAD90pD3jJOmiiy5SWVmZiouLVV1drdtvv12VlZWsTQUc4Y7E59neJCYmqry83Kfs25/ZUBM4svjjMw44ErArPY44w4YN07x58yS1r9d5xhln6JlnntGyZct02WWX9bud1atXy+v16p///GfHKKbXXnutWz23261Vq1Zp0qRJkqStW7eqrq5OOTk53eomJCRowIAB2rVrl37yk5/0eN1vv/X77sgps9ksr9fb7/4DODId7s+479aXpP/+978dHyYA+I8j6XnWmylTpuiee+5RRUWF4uPjJUmffvqpwsPDNWzYsB/cLoBDnz8844AjAcEoDlvV1dU699xzdfnll2vUqFEKCwvTqlWrdN999+n000/vqHfllVfqlFNOkcfj0SWXXNLv9gcPHiyXy6UHH3xQp556qpYuXarHHnusWz2bzaZf//rXeuCBB2S1WvWrX/1KkydP7viD9F133HGHrrvuOkVEROjEE0+Uw+HQqlWrVFtbq9/85jeaMmWKoqKidMkll+hPf/qTgoKC9OSTTyo/P19z5879/i8UgMPSkfqMk6SHHnpIU6dOVWhoqD799FP93//9n/76178qMjLy+71IAA4LR/LzrKCgQDU1NSooKJDH49G6des6+hQaGqrjjz9ew4YN08UXX6z77rtPZWVluu2223TttdcqMDDwe7yKAA5V/vyMk6QdO3aoqalJZWVlam1t7agzbNgwBQQE9Ps+gYOmv4uRHtj1UYG9a2trM373u98Z48aNMyIiIozg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08zh9xexLBfZrJdYrIW6OtXeE5Gjj23bbNmyhWQyQTgcxbYLDA3txuPxMm/ecmIHqhEicngoGBURERERETnSUqkxUqkEPl8Bt7tIoeAil/MQDEaoqYmRy+UYHR3CsvK4XG6i0foZJ0zK5XJYloVpmho6LyIi8twoGBUREREREXmpZLNZCoUCpmni9/sxDjQlvYiIiLyYFIyKiIiIiIiIiIhI1TmkYNR1uI9CRERERERERERE5GijYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFSqxrnnnst73/veycddXV188YtfPOTnf/e736W2tvaA2/zzP/8zK1eufF7HJyLyQqiNE5GXM7VxIvJypjZO5KWjYFSOGYODg7zrXe9i9uzZ+Hw+WlpauOiii7j//vtf6kN7QT796U9z+umnEwwGZ/wye+qpp7jmmmuYNWsWgUCAxYsX86UvfenIH6iIHFbV2sYNDw9z8cUX09bWhs/nY9asWbznPe9hbGzsyB+siBw21drGTTU8PExHRweGYZBIJI7I8YnIkVHNbZxhGNN+fvzjHx/ZAxV5Adwv9QGIHKrXvva15PN5vve97zFnzhz6+/v5y1/+wvDw8Et9aC9IPp/n6quv5rTTTuOmm26atv7xxx+nqamJH/zgB8yaNYsHHniAd7zjHZimyXve856X4IhF5HCo1jbO5XJx5ZVX8q//+q80NjayefNm3v3udzMyMsKPfvSjl+CIReRwqNY2bqq3v/3tLF++nD179hyhoxORI6Xa27ibb76Ziy++ePLxwW4UiRxN1GNUjgmJRIJ7772Xz372s5x33nl0dnZy8skn85GPfIRXvepVXHfddVx++eWO51iWRVNT00FPUvf6/Oc/z7JlywiFQsyaNYsbbriBVCo1bbtf//rXzJ8/H7/fz0UXXcSuXbsOuN9vf/vbLF68GL/fz6JFi/if//kfx/pPfvKTvO9972PZsmUzPv+6667jS1/6Eueccw5z5szhzW9+M29729v45S9/eUjvS0SOftXcxsViMd71rnexatUqOjs7ueCCC7jhhhu49957D+l9icjRr5rbuL2+9rWvkUgk+MAHPnBI70dEjh1q48pBaEtLy+SP3+8/pPclcjRQMCrHhHA4TDgc5te//jW5XG7a+uuvv54//OEP9Pb2Ti677bbbSKfTvP71rz+k13C5XHz5y1/mmWee4Xvf+x533HEHH/rQhxzbpNNpPv3pT/P973+f+++/n0QiwRve8Ib97vOHP/wh//RP/8SnP/1p1q1bx7/927/x8Y9/nO9973uH+M5nNjo6Sl1d3Qvah4gcPdTGVfT09PDLX/6Sc84553nvQ0SOLtXexj377LN86lOf4vvf/z4uly6/RF5uqr2NA3j3u99NQ0MDJ598Mt/5znewbfs570PkJWPb9qH+iLykfv7zn9uxWMz2+/326aefbn/kIx+xn3rqqcn1S5YssT/72c9OPr7iiivst771rZOPzznnHPvv//7vJx93dnbaX/jCF/b7ej/72c/s+vr6ycc333yzDdgPPfTQ5LJ169bZgP3www/btm3bn/jEJ+wVK1ZMrp87d679ox/9yLHff/mXf7FPO+20aa93880329FodL/Hs9f9999vu91u+/bbbz/otiJy7Kj2Nu4Nb3iDHQgEbMC+4oor7Ewms99tReTYU61tXDabtZcvX27/7//+r23btn3nnXfagB2Px/d77CJy7KnWNs62bftTn/qUfd9999lPPPGE/e///u+2z+ezv/SlL+332EWOoEPKO3XLUo4Zr33ta+np6eGWW27h4osv5q677uKEE07gu9/9LlC+E3fzzTcD0N/fz+9//3uuu+66Q97/n//8Zy644ALa29uJRCK85S1vYXh4mHQ6PbmN2+3mpJNOmny8aNEiamtrWbdu3bT9jY+Ps2XLFt7+9rdP3kUMh8P867/+K1u2bHlen8HatWu58sor+cQnPsErX/nK57UPETk6VXsb94UvfIEnnniC3/zmN2zZsoX3v//9z3kfInL0qtY27iMf+QiLFy/mzW9+8yE/R0SOPdXaxgF8/OMf54wzzuD444/nwx/+MB/60If4z//8z+e0D5GXkoJROab4/X4uvPBCPv7xj/PAAw/w1re+lU984hMA/PVf/zVbt27lwQcf5Ac/+AHd3d2cddZZh7Tf7du3c/nll7N8+XJ+8Ytf8Pjjj/PVr34VKBecfj721nz51re+xerVqyd/1q5dy0MPPfSc9/fss89ywQUX8I53vIOPfexjz+uYROToVs1tXEtLC4sWLeJVr3oV3/jGN/ja177mGHImIse+amzj7rjjDn72s5/hdrtxu91ccMEFADQ0NEy+dxF5eajGNm4mp5xyCrt3756xrIDI0Uiz0ssxbcmSJfz6178GoL6+nquuuoqbb76ZBx98kLe97W2HvJ/HH3+cUqnE5z73ucnaTz/96U+nbVcoFHjsscc4+eSTAdiwYQOJRILFixdP27a5uZm2tja2bt3Km970pufx7iqeeeYZzj//fK699lo+/elPv6B9icixo1rauH2VSiUAnVCLvMxVQxv3i1/8gkwmM/n40Ucf5brrruPee+9l7ty5z3u/InL0q4Y2biarV68mFovh8/le1P2KHC4KRuWYMDw8zNVXX811113H8uXLiUQiPPbYY/zHf/wHV1555eR2119/PZdffjnFYpFrr732kPc/b948LMviK1/5CldccQX3338/X//616dt5/F4uPHGG/nyl7+M2+3mPe95D6eeeurkl8++PvnJT/J3f/d3RKNRLr74YnK5HI899hjxeHxymOjOnTsZGRlh586dFItFVq9ePXlM4XCYtWvXcv7553PRRRfx/ve/n76+PgBM06SxsfGQ36OIHL2quY373e9+R39/PyeddBLhcJhnnnmGD37wg5xxxhl0dXUd+ocoIketam7j9g0/h4aGAFi8eDG1tbWH/B5F5OhVzW3crbfeSn9/P6eeeip+v58//elP/Nu//Rsf+MAHnsMnKPISO9RipEe4QKqIQzabtf/hH/7BPuGEE+xoNGoHg0F74cKF9sc+9jE7nU5PblcqlezOzk770ksvnbaPgxW0/vznP2+3trbagUDAvuiii+zvf//7juL4ewtO/+IXv7DnzJlj+3w++xWveIW9Y8eOyX3sW9Datm37hz/8ob1y5Urb6/XasVjMPvvss+1f/vKXk+uvvfZaG5j2c+edd07uc6b1nZ2dz/vzFJGjSzW3cXfccYd92mmn2dFo1Pb7/fb8+fPtD3/4w5qYRORlpJrbuH1p8iWRl59qbuN+//vf2ytXrrTD4bAdCoXsFStW2F//+tftYrH4/D9QkRfPIeWdhm3bh5yhvrAIVuTwS6VStLe3c/PNN/Oa17zmpT4cEZEXldo4EXk5UxsnIi9nauNEjjjjUDbSUHp5WSiVSgwNDfG5z32O2tpaXvWqV73UhyQi8qJRGyciL2dq40Tk5UxtnMjRTcGovCzs3LmT7u5uOjo6+O53v4vbrX/aIvLyoTZORF7O1MaJyMuZ2jiRo5uG0ouIiIiIiIiIiMjLySENpXcd7qMQEREREREREREROdooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBUREREREREREZGqo2BUREREREREREREqo6CUREREREREREREak6CkZFRERERERERESk6igYFRERERERERERkaqjYFRERERERERERESqjoJRERERERERERERqToKRkVERERERERERKTqKBgVERERERERERGRqqNgVERERERERERERKqOglERERERERERERGpOgpGRUREREREREREpOooGBURERERERERkf/P3n3HyXHXh/9/Tdu+d3u9n+7Uu9Vsy71hg8Fgqik2JWAghpAfEMiXhEBCEkihhQSSEDDN9GJjXDC4W7ZkWy4qVm+n6333tu9O+/2xq9tb6XSSsaxivZ+Pxz1OOzszO7u6nfnM+/P+vD9CnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQgghhBBCCCGEEGcdCYwKIYQQQgghhBBCCCHOOhIYFUIIIYQQQgghhBBCnHUkMCqEEEIIIYQQQgghhDjrSGBUCCGEEEIIIYQQQghx1pHAqBBCCCGEEEIIIYQQ4qwjgVEhhBBCCCGEEEIIIcRZRwKjQgghhBBCCCGEEEKIs44ERoUQQghxWsjlchw8eJChoaFTfShCCCGEEEKIs4B+qg9ACCGEEGe3oaEh/uPLn2BidAOtdcPEkw7b9/mprl3Mhz7yT6y98DJUVfpyhRBCCCGEECeW4rru8a573CsKIYQQQhyP3t5e/u5Tr+LLn9hFXU1puevC7X9U+f3jtcxd8g4+9ZmvouvSnyuEEEIIIYQ4LspxrSSBUSFOnP3793PfPT8mm0myeOmFXP3q16Np2qk+LCGEOG3d8oHL+be/eJSK8PTPf//XKqpnLnn/u/ngLX83uTwajTI4OIiu63R0dGAYxkk6YiGEOD2YpkksFiWbSaGq4PMFqaiskvOhEEIIUXBcgVFJvRDiBBgbG+Pzn3kHrdUv8KYrBwn44dltAf78fZ1cfs3HiMcGSCW6ABevv5XXv+mDdHR0nOKjFkKIU2vfvn101O84alAU4KbrHT7+pX46528kk8kwPjbKH3//IyKBAVobEuTyOo8/WE2oeiFXX/MWKisrUZTjagMJIcQZybIsRkeGyGRiVFc4VNcVJo5IZZMMDowTCtdRVVVzzP0IIYQQQjJGhXjJUqkUt7z/Yr7yyU3UH9YGdV342695WLW8lbddFwEgFodf/7EaX/V13PTe/49kMsnY2Bher5eGhga5oRdCnDV+cOt/sKLuE6xYPPN6H/+il7e/aRn9+U8yMfIk775ulMMTonZ3Kdz9SIiOOcvo6FzBytUXyvlUCPGKY9s2Q4N92PYEzXUw3bik4ZiGL9hERUXVST8+IYQQ4jQiGaNCnAzf+86/88kbNx8RFAVQFPjSJ/N8+PMDvPV1hSymSAXc/NZx7nnkN/zj57Yxf46fppo06axO32g18xddzCWXvUZu6IUQr3iO43A8cyopCoSDDs8+fh9f+EsLY5rWy/wOl0vXJHGU3QTcUf54Xz/XvOatci4VQryiJJNxbCtBYy2kUjZjE2YhfcUFf0CjJqJTF7HpHRmVwKgQQghxHGSKVyFeom2b7mLF4qMnVCsKXLwqx/qNybLlr7s8hWJu4+2vHuWyc9Nce0mcm9/URcD+NXf8+taX+7CFEOKUO2/t1TzyzMzDPW0bMjmdvT1+5rRNHxQ9ZNUSlxd2JlnYmaepcgc7t28F4EWMjhFCiNNaJp1AVRx6+7OkM1laG2w6m206W2yC3jwH+zIkMzZeI08mkznVhyuEEEKc9iRjVIiXyO+ZOOY6yxc4bNqT4aLzygvpzZtlcbAvT0erZ3LZmiVZohue4r7fN1BfV0NNbRPtszok60kI8YqzdNky/vMr88jlxvB6p1/n9j8qvObyOjZsruQj7555f6oChmEDsGRejp/cfS+jw1tQcDFtDzW1nSxcvAKPxzPzjoQQ4jTkOA5gk07naKq3CfnKnw8HIBBw6erLURlWMU0Tv99/So5VCCGEOFNIxqgQL5HtHHvmz3gSgoEjq0BVVdokUs4Ryy9dk6Zr9+9oCNzDeM+P+e2vv8WeXdtOyPEKIcTp5JOf+S4f/eIs0tMkNj3+DPz0bpXhaBWt7edzXImfxXU0BarDGS5ZMcHFK+JcsXqUxopneOyRO8lmsyf0PQghxMniOg66dmRQ9BANaK51iSVMNG26CqRCCCGEmEoyRoV4iXTfAhLJXYRDR1/njgcM/uGvIkcs7xnUWHnOkV9DrwFBv0VLPbTUZ1mxcIBHnvkdtuOwcNGyE3j0Qghxai1ctITPfOGPfOJLH8bjbOTcpSnyJmzcAovmwD98zObAkInpGWLL7ggdLbGj7ss0wXJKgQBFLcRJD+Xb11e5nL9kmI1PP8ScOcsYG+0HIFxRS2WkGk3TMAwDTdMkq1QIcdpRVZV0Jk991cy9RH4v2LZDIBA4SUcmhBBCnLkkMCrES/Tem/+er/3oKf7+I0PTPr9zH/QN2lSEyxO0bRuGxwzqa47yNZzS5lUUuHxNkt8+8jDz5i+WDAAhxCvK3Hnz+fb3H2ZkZITf3flbqvIf4r+/AIdOdZt393He6qd5aPO1pDIxgkcZGfrIRpXzV1QC4LpgWuoRU1GGA+Dme0nHUixod1GAgdFudmxVCYcD2I4Pw+PB56uguraFqqrql+19CyHEi6VpOsaxByuhqqqUYRJCCCGOgwylF+IlOmfFKuav+jx/95+NjEVLyx0H7nkYvvo9+M4XHW6/d2DyOdeF//4JNNZOHxTN5sE9rN9CUWB+W5SdO7exZ88Otm19lq4D+7Asq7RdNsvOHVt4/pmHef7Zh9m6+Uni8fhxv5d4PE5fz0H6+rpJp9PHvZ0QQpwIdXV1fODmDxI3L2Jq/09rfZRZzRZNtSl+dHcL47Hy7VwXnngO9h5UWTyvEDXd1aXQ0Tp9ttS8WSaOncGjgaFBe4PL+StsLDPFrOYsFaE0hjpOamIPfX0HX6Z3K4QQL14wFCaTm3kd04F0OsuObU+zc9sGdmx7kgP7d0kZESGEEGIayouYqVWmdBViBjt37OAH3/0C6fh2HDvH+Mhu3voauP5VhaynrbvACCwkmghw/xPwmkugIgxVNXNoqC3v+r/3Mehsb2TR3PICUtEE/GF9DZes8eP3OUwkNboHKmloXkS4sprB3i3MbU9TGSysn8nB/j4fqtHGoiUrj3rs8XicnoM7CPszRCpMbAfGJ7zkrSCdc5bg85WOwzRNxkaHyefTaLpBdXWDFPYXQpxQ2154ltrkGhpqS8t+9YcGFi1qp3rBHTyx7m7i0V2EfMOouMSTsHwh+HwKC+fNYnAUnnjO4IbX103bAzwSg9FYmEVzys+xpg1bdxmsWhpiT49CS2OQoVGVUKSTurr6l/U9CyHE8TBNk97ubXQ2TR/kzFkuO/dlaK63qa0slRJJZuDgoJ/m1sWSCS+EEOJscVxDJyQwKsTL5P7ff5819e+nqrK07H9+5qehaSGvv0rBKCaE3vmgj+tf0wEUsp6e3gIDI1BdFeLS82vL9jkShb29YS5YUT67/fYDHgZG/Fx5gWfab37PkIGpLmL2nIVHPJdIxOnt2szcjizGYRvnTNjdE2L+glV4PB76+7owzRi1lTm8HrBsGI8Z5J0gra1zMI5nbJcQQhyHH/3HXN5z3b7Jx7/5o8qbXncOv3/m9bzuLV/Asiyef/Zp2oLforF4qnRc+PFd1XS2VxAI6KxeNn0wc9telbraymlLmWzdqzK3MwyuSv+wQUuzj+5+L22zFkonkBDitDDQ342hDFFbaR/x3La9GWa3WfinaZLZwM4DfubOPxev1/vyH6gQQghxah1XYFSG0gvxMrn62j/j149eVbbsw2/P8MLu5GRQFOBVF2T53q+y3P5H+O6vwXbgja+CBR1JuvvLx0pt36szr+PIoaGLO/N49CQ5c/r+i7YGk7GRgziOc8Rzvd27mDvryKAoFCaBmtOapLd7L/29XQQ8o3Q05Aj5wFDBb0BLnUlDJMbe3Zvo7t7F8PAApmkexyckhBBH17b0S2SmJES9/nKHB9eN0xy+j2Qyia7rnHv+heztLXUgqQrMaYtzyRpoqrPI5I4859nA8Lh21PrOIb9LNuvg94Bpu/h0ULBIJKLTri+EECdbY1MbOaeeg0NeUrlC9orpQPeAg88zfVAUCjPWtzVmGOzvPpmHK4R4hcpmszz/7AYevv/XPPLQHWx88hESicSpPiwhXjQJjArxMnrXh+/kzodK2Z2qCu+7bg8//V1qclkwAPPaBqhsupHrr4QLiyPeG2qgp28Yq3hfn0xD/wjURqafeGlBp83ersxRj6U2kmJsbKxsWSaTwaNnMGY4EwQ8kM3GsMwYVaEjMxMAAl6orbYJ+9KEvKMMDHRJcFQI8ZJcftXbuOvR0nBPjwcGh/pZucjisfu/Mbk8WHMd9pT45/L5Fgf7czTXwd6u1NRdYgOPPwML5waP+ro5U8HQiz1FU/uaHDmnCSFOD4qi0NIyi6aWJUykm+kainCgVyedzdPcMPO2FX5Ip8dPzoEKIV6RXNdlx7bNPPbwz2is2MTla4a4fGU/C9q2sfXZX/Hcs0+c6kMU4kWRwKgQL6NgMEjryjs42Fda1t4MPqWL8VgpyHjJ6hzJ8YfYsH1B2fYXrLDZ8OwYA6Pw+3WwbL5FJn9kBhRAbRXE4ke/cfd5LfL5fNmyVCpFOHCMCv6AR88TCc1csD9SAbEJi4AHGquzDA/2HnO/QghxNIqioNd+qmzZay812fRCkjrf78hkCh1BS1dczgt7PJPrhIPQdbCQ3ZnJZOkZgoFR2LoXHnsaZrdx1NaPCyRSKiG/RioLXo9K3gLHVZGKQkKI043H46G5pZ3OzoXM6lyG7bjo0/efl1EUOZ8JIf40pmny1FNPsGfX41x4TpKmWmdyrHJFAC48J0NQ28bzz204pccpxIshgVEhXmarz72Kh7e/j6mj2N98TY5v/7g8cHje3IeZv+T1PLmlVMNOVWBOa4JN2/O8/kpYOhe27YpN+zqWBZp69K90OmMQCJQPw9c0Dds5dgvasuBYpfUMhckzikcDTcvK7KdCiJfkdW/8JH98olQHr6YKnt/aw7lLLR754zcBMAyDuHVe2XbtjVlSGYcFHSZjmfM50KvRWAtXnAdtDRCLlmeSHrK/DxprC0HWniGFxgYPg2MKVREfrjSZhBCnMa/Xi25UkT764CEALBdcd/pSIkIIcTSmafLIw3dx753fRMvdT0fjAE9sHOXuh8aJJsoTdxbMMhkb2UM8LmWIxJlBWvlCnAQ3ffA7/PTeprJlf37DGD+/c3TycVM9HNj8GWo7/5LxidJ6zXUQ8g5P1iWd05ZlcPTIzNC9PSodrb4jlh8yHg8RiUTKloVCIWLJmYvvO0DO1HHd46hbPOWaWBG0SCbjx95GCCGOwuv1MpS7sWzZxasz9PTnqNJuJ5crZLwvXXkDAyOldTrbYPO2CSrD4Fpd1NQvpC5Ser62ymQiVTphZU3Yvh9iE9DY4OVAP2iqRjKlkEqrBAIefL7ySe+EEOJ00zl7Mf3DM9/ejUY1autaT9IRCSFeCSzL4p67fsyCxme4/vJRzl1isXy+y6svsrhqbZaHnhglGi8vudbWkKbnYBcvYrJvIU4ZCYwKcRLous7a6+5ny67SV66qEpprehkaKQ1vv2btKAd2r2NL15qy7S9YYfHUs4Uet6owDAxGywZ15izY06VQWzN9tf3dByEQiqAo5cFNwzDw+qqZSB096Nk/AtW1rYzHZs4uiKfBHyhlnyoKuO70w/6FEOJ4vfbN/8bz20vnqHmz4MHHell7Tp5H7/8/AKqqa9jTO6tsO0NL4LjgcbfTOmsNo1M6nOoisG2PxpMvBHluO+zaD831sHwRvLArR2UIfJ5CAz9SAfGkQSAYetnfqxBCvBQejwfd18jAUUqIJrMwOhGmprb+5B6YEOKM47ouL2zdyj13/Yrvf++bzGncQ1OddcR6fi+87nKLdU/HypaHAjbpVIxkMnmSjliIP50ERoU4SebOXcLuic+TnVLS89JzHX7+232TPWm6Dk3+HzJvyVt5dkcp+1PXoLVhYjJTdOl8i+17CxeZ8QSsewaWzXN4ekuAvhGNQ/1143F4bjt4DKj09047IVL7rHn0j1YzElPKgq2mCz1DkElDdXUNGdNP9shr4eS6g6MKNZFS8DSTVfH5jj7BiRBCHI+a2lo2dV1Vtmz+rAkSSZuA/fPJ81p9x1vJTimjfM5Ch51708xtyzE2PsBIrDwQ0FAV4/wLXktNjY9zFkAkVCgJEglnqa6A+hoXj2ETCdkYuo1hHGWaZyGEOI3MnbuYWCLMzi6FaKLQeZ7MwL5e6B2Cioow6gyll4QQ4pmNj/PPn7+Jvc/8BbND/8qK1tt44KHH+Oatm8lNM9+Fz4BwwC4bUp9IaUQqLUaHd3PwwB6ZmFec1uSqKMRJ9JZ3fp7bfr+0bNmfvyPDT24fmHy8dJ7Nxkf+lnDTR5hIlNZrb4Lde4dwXDA08OoJ7l/vcLAPLl4Ns1tdImETPOeyZW8LG7ZWMBaDpQugoxla60x6u7cccUy6rjN/4TlY6gK2H6hg50Ef2w/A3i7w+wrZWbHR7bS1z6dnKMh4XJk6Yp5kFrr7IBhw0dVCVpcDpLIeQiHJsBJCvHQXX/sNekqnSS5cBXffP8DFq7I8+sD3AFiwcCWbd5U6YzwGjI7F8Bow2vcYlXVryE/p3GlvytPftx/VO6/stRpqHOIpG68OyWQOvxfyuYkjJq8TQojTkaIozJ2/mvraEOmsj91dMBaDyrANdob+3t3s2bNjshSJEEJM9fSTj7HxkX/i7z64kze+KsmiuXDuMvjEezNcd+kA//7NZ7DsI4fHd7RY9A+VzisDo17mtIfobDKpj4xxsGu3BEfFaUsCo0KcRIqicP277+fRjaXMI68Hzpk3yJ796cllV63ezsTECM/tW162/QUrLZ7eFANgbpuLR0+zcmGhlw5gVmM/hqGwctVFrL3w1eiGH8+UuZUqfftJp4+cdETTNJqa21iy7HwWLrmEysoGFnVCbWXh+ZrKBNlMmo6OhVjqLPZ0e9h1UOFAHySShaBtfTXEkhYOMDgKwWmG7gshxJ9i3rzFPPjs4rJlId8oluXiyd6GaZooioLju7JsnQWdeUaiFhF/N3X1rRwcLNVUNjSIj26ksWkug+Ol5lDAC2PRwuwl4aBN1nIJePOkU2Mv4zsUQogTxzAM0NuprzOorvQwHk0yMpKktTHLqsVZanxb2bH1AXbu2CT1/4QQk1zX5Q93f4s/f/so093GdbTCq9bGeGhd3xHPOS6oxfnpdxzQaGqsQS3uxO+FukiC6NjoEdsJcTqQwKgQJ1l9QyNm9XcYj5WWLVsATzy9F9MsNE7DIcj0/zMrzv8Qm3eV38g3VMUYjRbSns6ZH2f7/lLPW8gH0aEHcBwHRVGorDuf9JSEgOqwy0DPU8c8xtqGBUSnlIPxGxAf345hGNTXNzKrYxEVFQ2EgtBUWzguQ4VcPk/fCFSEwLVjR92/EEK8WPPXfJnElPPStZc6/OGRES5eleHxR34MwDmr38Ce7lLTpqEGdu6O0dFisW/vJtAXle2zsXqMXC5HxiyfHC8UMMnbLhUBGB/PURmGdHJUAghCiDNGVU0TYxNeegdizG03WTTbIeQDjwbVlbBifoqw5wC7dm4+1YcqhDhNPPPMk5y3pH/aoOgha1c4PLu594jl+3t0Kio9bNgEgyMaC+eUlzCqCEIyKYFRcXqSwKgQp8CrXv1efrPu6rJl77ne4rbfdE0+vnRNhnX3fxmj5mYSpWRSOlvhhZ1DuC5EwpBKJsqGts9uS7N/77MAVFfXMzBeV/Y6zdWjjI0Oznh8Xq+XdL6xbFl1ZZJ4vDABlM/np76xDcttKHvtmkqXCr9FyAdBX5ZMJjPzByGEEMfpgouu5e7HGiYf6zpMxAZRFBcmfoBt2wQCAQai5ZmlkXAK24Z0dANtnasZnpIdWhWG3oNPU9e4jOSU01VdBAaHs4XX0cxCFoSaIZ2WCQSEEGcGRVHI5EM01+UJB6Zfp6XOJJfuk2H14hXBdV0cx2F4eJitW7eyb98+6dB8kfbv2cziOekZ11EUyGSzOFM+2kQaBsd0hkZUli+EeR0WplP+2SuAopTPXC/E6UICo0KcIu/60B389sHw5GNVhavXRtm4KT65bGXnH/AHqnhm18KybS9cYfLM1sIUyysWZXnimdIFzFDA7z5LthiUbG47n/GJUref3wvx8adxnJlnjK9rmE90So1TvwGJ8R2TjzVNo7a+lVi8NFb/UNYogE+HTLL/mJ+DEEIcD0VRCLd9FntKm/q6Kyyeei7OJauTPP7oLwCYvfgdZfWZl8xz2bwjTnPtEJZlMZYs7/Txshd/IMhIrOKwV8zhAjVVMB4zqQo7pBLDL8+bE0KIl0F0tI+m+pkDQ+2NKbq7956kIxLixHJdl43r1vGVT3yCd69ezXXt7fztBRew7/3v55n3v59/fuc7uesnPznVh3nG8Hj8ZHOQStt856eD/MVnd/GJv9/JX3x2N7ffO4ZlFc4nhu5yz4PjAEQTcMf9GtdcGmHVYgj6oLHOYXAodgrfiRAvjgRGhThFgsEg7avupGtKiZa2Jujv308yVbjzb2uEbRv+ijUXf5wX9pbqknoMiASjRBM2hgqt9YmyWQBb6m32734QAH8gQDw/p+y1W+uz9PXumvH4PF4vaau5bFlNZYqJ2PjkY8MwsLXyIENVpUs8VRjq7/emyWazx/oohBDiuLzm9bfw+3Wl1KeKEOzc04euQ37sOziOQ2tbJ1v31U6uoyqQy8ZprIb9ex6npvE8slNq/7c2mfT17MFfsRhzStC1qdZlNGqiAWY+h1cHMx+TiQOEEGcMRTHRj1HuPRSCdDI+80pCnIZc1+V7X/0q37rxRsb/53/47PPP872+Pm7av58Htm4lsXcvn9uzB/9//ze3/uu/nurDPSOsvegafnGvn4/8zU5WzOvnm59P8fW/TfOff5ckYHTzgU/t4mCfRShg0D+U5o4H4LltsHqJQzSuT+5HVyCZGCnbt+kAqu8kvyMhjo8ERoU4hVadewWP7Hg/U5M3r7/K4ed37Jt8/OoLhnj6iZ/jBN9LekqMcd4s2LS1MKS+s8Vmy47yIZ6ttQcZLQ6Zb2lfRs9wKbBqqKDb2445y3J943zGE6UWtc+AZGxH2TqRSCPRROlUYqiQzRX26zcgnRhACCFOBF3Xias3ly274rws+7qyXL46zobH7wAgWHMd9pTz6vL5Ft39Ochuor6hhZ7BUnDVUCAde5b6hlYGR6ecJzVIpgqZ9zURl3jKJuQ3SSZLnUNCCHE6c91j3+qZedANz0k4GiFOnEwmw50//jF//PKX+VxPD1/K5VgENAKXA9/M5fAODvJ/AwO8KptFvesufv6d79Df1yfD62dQVVXFhqe28+1/ynHulDmAVRVec6nLv386zUc/u5/rXlXLhSstmmpSXLUW5s926eq1yvYV9Kawp3zWgyNQU1OedCPE6UICo0KcYjfd/G1+cm/5ReKtr05y/6OF4tSGAbXad2mbtZyntpdnfl6wIs+m7YUxoysXJNl5oBTorAjASO8fcV0XwzDQgyvIT82GqnHoO/jsjMdmGAYZq6VsWW0kTTQ6UraOpTSUrROpcElkCi/m8yTJS+0qIcQJct1b/4knN5VKeMxqgcee7MEwIDXw37iuy9IVl7NtSpZ9OAgHDkbpbEkwPDyA4ltats/muhjJxASu3lm2vKbSJpW18RmQSOapDEI6MSw3VUKIM0K4spFoYuaU0e4BnfqG9pN0REK8dNlsltHeXu75wQ+4cXSUOUdZ792Ow7axMdKOw9uyWfp+/3ui997L4/fdh21Lrcvp/PJn3+UzH0rg807/fEMtXH5elmQiRWUYsrnC52ioEPQlSE1J4mmqcxgeTmA60DcKugap1NhJeBdCvHgSGBXiFNN1nQuve4DNO0tfx0gF+PUeBocLgc5zFlo8cu+nWH3RJ9l5oDRMwecBnzFOPGVTEYJkMsHUy/zc1gRd+7cC0NjYQd9wmKlqQj0k4jMPn6pvnMvolBqlXh3SE+XD8CNVzUSTpXU8GmQyhWBowAPJuGSNCiFOjIqKCnYOva5s2fJ5CcZjJpetifHU+nswDIMJ8/yyddoas6iKQ9/+R2jvOIf+0dI5tyIAfd1P0dC8qOx8VxGE4dFCKz8ctMhZLoaWJpNJvYzvUAghToz2WXPZ2x3COkpfTjoHqYwX15KZosWZIz42xlP33cfEtm287hhzJrw9n+fXo6OEAFIpluTzzD14kE3r15+UYz3TbNzway5ebc24zodusPjpHTvpH1GpjpQ6oVvq0vQMltpQhgb9Q8P0DkDYD021YDBMJjPz5E5CnAoSGBXiNDBn7iL2Jb9AZkov28VrXO65f89kZtIVK7ewb+/zZPR3kp0yAn7RbJdnNxcmBFmxMMf6qRMxaaDlN5DP51EUhZrGtWUz3FcEYaR/w4zHZhgGeVrLltVVZYiOD5etY7n1ZetUhl2S2UKY1qMnpC6fEOKEufK6/2DvwdLj1Uvh3gf68Xog2v2fuK7LkhVvY2BKeavZbbBl+wQ+bTe6rjORKT+vBfUuVFUlkaktW+7zmphOIXg6Fs1RVeESnxh8Od+eEEKcEF6vl7kLzuX5HeGyCTUdoH8EnnlBo7m5nkjYKmvXCXG6yufzpMbH8YyNETILdcBnshTYly7c/BzqH2iybdLd3XJvMg1NzaMcoy5xRRj6BlNs3RWmtdk/uXxWi8vIaHmZtupQktYml4pg4XFtpcv46B757MVpRwKjQpwm3vT2z/KT+5aVLbvpDTl+fVdhZvdIBcQO/AOLl1/Bhq1tZeudtyzH1p1JdBXaG+NlEzG1N1rs2/UIABWVVYwmmsq2bamfYHiwe8Zjq6ufw8hEeUZoOr6rbDhppLqVidRhmaXpwsUx5IPEhGSNCiFOjPZZnazbuqpsWW3lOPm8w+Vrxnj26QeorqllT2/58FBNTTCnLc/Bg7upbz6/bMhXa6NNb/cOInXLyUxp1zfUuJNZo7pqompgm1Fp1AshzghV1bUsX3klI4lFPLlZ4fkd8Px2sB1obzFw3Ryu6xIb28/+ffvo7+/HsmbOGBPiVDFNk64dOzjPNEkfK4IHxICgrhMFTG9pfHh7PE5v98z3P2cjV6nkWBXQunqhqkJl/vx5dA+UPlNNAa+RLJvgsrnBpqsnU7Z92J9hIib3heL0IoFRIU4TiqJw/Xvu5+GnSgXwvR5YPHuI3fsKPZ1XnJ/kj3d9iRUXfpq9PaU+0qAfFHeMVMZmVpPD1h3lw+MbK/cQjRZqujS3nctwtPTV9+qQTTw3YyPYMAwsygMM9dVZouNDZevk7PJMq4qwQ6qYNWpoExJIEEKcMOdc/HWiE6XH11zscs+Dw/h9MLz/67iuS/2st5Zl2J+z0GFfV5rowGPU1NbTO6W8iArkkpuoqqphcDxQttw0C3cJ1REYj5pUBGySyejL+waFEOIE8Xq9zF+4jIaGClYugtWLoa0BXMdmZGScxx5/jkR0C3r+PpLDd/PEI79iy6YnpZ6yOO2oqkoum6USCDY1sfcY6/8UsDIZfum6LO/v5+B4YQJFr+OQz2Rm3vgs9Ma3fZzf3B+acZ3/uk3h/93SwERsGFUvHzHYWJOhu7/02KtDLjNCbsptZkUArPwIyeQEQpwuJDAqxGmkrr4Bt+5Wxqbcby+ZBxuf34tpFhqny1vvJhGPErXeSn5KnHHpPJenny+MG125KM3OA6XuvqowDB78AwBen4+su7CsFmlrQ57+nm0zHlttfSfDsVIw1lAhk9xd1miuqmknPqX0nk+HZLpwkGEfJCdkmJYQ4sRYteZS7nm8lD2vqmBmh3Bdl8tWDbH5+XUsWLSKzbuCk+t4DRgZjVET7iWXy+EJLWdqdbLW+gTj4yN4/AvKzpGNNQ7RhIWuQD6fIxyAZEKyHYQQZxZFi5Q9Hh1PkU0P8Kq1KZbPM2lvhPmzTC5bPU7Et4Wnnnzo1ByoEEdhGAb+6mpGFIXPXnEFnw+FOFr4fgDoAT6dSDC6ezdX2zZDd91FTzRKzOMhVFV1Eo/8zHD5Fdfw8KY17Ds4/fOPPgWK4jIwlCYXf4yOWa2MTLlvbW+CgeHy4fR+I0YsUV70oDJkks8MkM+XryvEqSKBUSFOM1decxN3PPHqsmU3vt7iJ7d3AYUZmDev+ySrz7+O9Vsay9ZbsyTLjj0pwgFIp+JlN/azW6J0H9wJQEvbIvqGSkMfVMCv7SE7Q8+pYRjYSltZEKG+KsfY6GDZOlmrpmy7ipBNOl/YSlPHJWtUCHHC1M39AlPb1NddYfPYkzGCAejd+RUURcHxXVm2zfzOPEFfjv17n6G1fQl9Q6XGesgHQ71PUd/YwfBYqYnk80AsVhhOXxNxSaRsfEZGJhA4jdi2zfDwMCMjIzjHmIxDiLOV11fK7jJtiE0kOW+pxXQDktsbTAJaF8NDUlNZnD50XWf+ypVsCoWYHQ7znmuv5X2hEFPjeC7wMPD/gC8CBvDZVIrbtm9nQS5H3113sXl8nLq6ulPxFk5riqLwjf++h/+6/fX8y3ca6R2AfB527IW/+Qo8thH+/a9hbHQ/qxYl2bh5iN4hX9k+Ap4k+SkZos31Fq5jkpxSvshvgJVPkEr2yTVbnBYkMCrEaehdH7qdOx6oKFv2qrVRnn6+MOTg1Rf28eiDt7HkvL/mQF/paxwOQjY7Sibncs5CkyefK1Xa9+pgJddhmiaapuGvXFM2xLQu4tDf8/SMx1Vb38FotDxrNJ8uzxqN1Mwqm+DJb0AiWXihCj8kEzLzqRDixLj62vdyz2Ol4fABP3QVx3BdtrKPF7Y+yTmr38DentJ5srEGduyOkZ14GsMwSJqzyvZZ4evFdV2ydvnkTJUVJlnTwWdAPJknEobYeN/L+O7E8cjn8/zw61/nX9/xDu5617v458sv501z5vDeyy5j06ZNp/rwhDithCvrSBcHFHX1ZlnQYU8bFD1kQWeW3bueOynHdqJlMhlGhgcYHuxleLCPRDyObdvH3lCc9uobG9FnzWKbrvOaefP41/e/n++uXMn76+r4cE0N729u5pvt7fw9EJmy3Qfyef6wbRttqRTNt9/OUz/4gQTlphEIBPiPb/2Od/z5en786F/yue++g6/+ZAUffx987i8KI3Ree5nLg4/tpWfPHUxkZpdt31yf5eCU5pHfA2Oj/aQz5VmjVZU2rp0kGZd7Q3HqSWBUiNNQIBCg49zfcaC3tKy1EYaHDpBIWngMqHT+G4/hZSj9eswp7byVi1yefG4ETYG2hiSxZOmCP7s5z77djwNQV99C/1j5EJL6yBDR6NEvToZh4OgdZZmodVV5RkdLxWQ8Hg8Zs7psu3DAJmMWjkN1xiRrVAhxQqiqihn8WNmyay7MsWN3inAIDmz9NwKBAP3ji8vWiYRTNNWMEo/HaWpdS3xKZ05LnU3Pwa00NC9jYkppkOowDI0UIgohv4XruLh2TM5np1Aul+NfbrmFC376U2Y/9RTPPv44b9y+nR91dfGlxx7j3rVrufmSSxgaGjr2zs5w+/fv55lnnqG/v//YK4uzVjAYZCJZuP0bHTdpOkbCnFcH10nNvNJpxjRNhgf7yCYGiPiS1Icy1ATTkB9heKiP3LFmlhGnPU3TuPA1r2F/Rwe/DwQgFOLz117LNz74Qd55yy284X3v47abbmLHa1/LC4dte4Nts337dqonJuDWW1n/i1+ckvdwJujs7OQzf/cN/u1rP+PbP3iG+zaUT/5743VpcslNLFh6JYNTbh9b6qFvqHwUokeNEan0EU2WlhkquHYaQ5sgkzmzzjPilUcCo0Kcplauvox1u25mauf2dVc4/Py3+wFYtdjioXv+mvMueisbNpdPerRyYZo9BzK0N7ps3Rkre64msIN4vDA5U33LWqLJUq5AyAexoadmLLZfW9fOSFSffGyoYGX2lG1TWT2rbLhEwAuJRCFrtDLokkyOHd+HIIQQx3DdWz7LoxuNycdN9fDks4VepYuXd7Nj+3N0Ln4H8SmN8SXzXPr64xzY8xiRqir6RyNl+7QzWwgEgozHyzuPVCWHA1SGYCyapzJsk0zIJEynym1f/zrv3rKFLcPDjPX389+5HFcAlUAL8Le5HP/++ON8+pprSCaTx9jbmenOH9/Ghy4+lzuuXcvOG67g1qvO5ZZXXcKTjz56qg9NnIYURSFnFYa9KmphZvpjco898/fpJBYdJexNUxWwMYp3upoCYZ9DbSjH+NigdGi9AsRHR7lm0SIuv/RSDi5cyAPNzTzT0cHCSy9l7ty55IDrVqwg/a538ZhaHvK42nXJ7tqFMjKC+Y1vsPH3vz81b+IMomkaV7z5YTZuKX2WwQCcu7iPn/3wrxkYL78XDfrSmFPOL031OQZHLFzHgznlNrOmwiWZTGFm5XspTi0JjApxGrvx5v/lJ/eWD+e84TVJ/vBIYZKly5Y/y7Yt65m/6tP0DJYarpEwxGIj5ExYuTDL7q5S73hdxKVn330AhEJhYqny3r/WhhQD/fuOeky6rqPoHVhTLmq1VSajI6X0Vq/XSzoXKdsuGLDJHrpCWmNYloUQQrxUgUCAgxNvKVt27tIUQyN5qiph76Z/oa2tky17S412VYFsJo5qbinso2JV2TmtrTHN8HA/oeql5Kd0TjXWuQyP5Yr7yOPzQjIuw+lPBdM0Gdm4kVm2zQPDw/zFUYbIVgOf3LKFmxcu5N+uuIIvv+ENfO2mm/ivj32Mb3/hC/zoW9/i9l/9igceeIBnnnmGvXv3MjQ0RCwWI5VKYZrmaTsz93/+w+fo+7uP8O3BZ/grZ4SbtCSfs/r5Ztfj3P3hd/KHO24/1YcoTkMuhVJNbY0+uvpmvhVMpMHrr5lxndNJPp8HJ4vfmP55Q4VKX570K7Sj5Gxh2zZ2KoUX8BsGa+fN49rVq7li2TIaw2GWLVpEbM0aelSV8zo6aL75Zm43yv8oVgNNBw6Q7O0l9o//yNb160/JezmTtM+aw5DyNRJTvj6rFkOF8wvwnlO2bltDjq6e0rUz5IPo+ABev0E0Vt7Z4jOyeA2LZELqGYtTR3kRjb3Ts1UoxCvcgf27iL2wmJWLS91uTzwLc+YupbHew/1PVnD5G//I00/8nLXz70Ob0sZ9ZGOAyy+o5/mdOksX1U/2nGfyELWupbllduHmsvcummtKgcq+EZ369tdjGNO3LG3bZqTvMRqrS9sMjOs0tF6GWuyVzWYz2JnNBEtzPDEc1aiv9mEBqWwjlVVS9FwI8dINDgwwvrmFxXNLTZUf3VnFe27oZCwG474fkIwNck7rD1CL7fF4EgajTYRbP05dXSM9u79HZ1MpW2FHdzMLl7+Rnr130t5QKsh8oF+ls7US04VY3IeqGgSrzsHn85+stysoDB3f9IEPEO7pIbF/P28+Rnv2FuB/plluAXnALP7kj/LbOvRbUTAVBVtVsVUVS1WxNQ1H13EP/RhG4WfKY4rL8HhQDv32eMAwUH0+FI8HxesllkwSHRtBVcDVDdTKCLOWLCXS0IDu96P5fGh+P7f/7GdYd/2Y/4pMn2HjuvDBwDy+tXErXq932nXE2amnezttkRdwgQfXx7hsjYmhTb/uuk1elpzzJqqrT6/gqGmaWJaJZeZw7RyubaJgkc1ZVATBp5evb7mQyTo4rotHV0nk/NQ3tU2/c3Hay+fzDL3wAm3HmNF8fyJBZv16luTzjKZS/PY73+HmdPmkiaPA72trqZ07l3m33srcxYun35mY9C+fmcPf3Lx/8rHjwD9/by0fePdVtDSUrsUPb4xwxdrA5OMdBzTq2l6PRxvBq2fxTvmeDkUNqqsryFq1hMPlo3WEeImOa9iDfuxVhBCnUufsBdyx8Z9YmP0s/uKkfxethu/9Zg9/9s7FXL02zj13/Tuvuf4zbLj/SS5eEZvcdtm8NAd6spyzwMeTmxJcuKowSYnfA73DD2M1tGMYBq6+FNPeNNkwbqmzONC9ic455057TJqmoXrmYLq7MIqnmtoqi9HhXuob2wHw+fwMRysJeicmtwv4bXKWi1dXcKxhHKdmMpAqhBB/qsamJn7/ywtZPPeJyWVtDTEyWYeaiMoTj/0L197wQ17Y8BOWzy8EkipC8PyOKEn7EZqabiLnzAZ2TW5fFRos1KIz5gLbJ5fXVTsk0jbhgEY+n6O+3mB4tIeW1vkn6+2e1Xp6elj/u9/R39NDcybDgUyGi4+jk993lOU6L7Ix7LqFn1M8YccDGnx4hriOosCN8S5+88Mf8K4PffjkHZg47QVD9Zg2GBqsWhLmkY0TXLjCJjjlS2LasGmHh9raNux8DNetRlFO7pB60zQxTRPbyuHa2WLw00ZVLXQFdB38KoXxj8V+/JwJ2pQgr+vCaNwin7cI+ApD6pMZSGUtEvE44YqK6V5anOYURcE+jr/HUDiM/upXs/GRR1gN3PjRj/Kf3/8+Hx0d5dCfSS3w1tFRbsvnyd98M/6f/5yW9vaX8/DPeB/+9NP89lf1vPFVxfkjVHj/dU/yyJPncOP1pU4Uvy+NTWDys26us+nu20FLSwuZjElDVWmkR2XYJJe10LRRcrmAdOiJk04iEkKcAd54w9/wk/vKhyjc9Pocv7yrMMnCwoY7GOjvpnPppxgYKa1TE4GhkRFsG2Y1JokmShegOa1Z9u95CoDm1nn0Dgem7p6Ir4tU6uhDjWrrWxmdWmtUASe/r2zGz3Bk1uTsp1AYRjERL05eEnJIJsaP7wMQQohjOO+qbzA0pfj/FWtd7r6/MCzr/MW76O09wES+vLOntTGL7uzCtm1aZp1HNFF6rrHaoafreZpaFjAcK6/FPDpemFSgOuKSyzqo7oTUxnqZmabJbV//Oi988Yu8bv16bunu5qCiENY0jqfK6yuteEtch+ZjRHQv101u//d/YvuWzSfnoMQZIRyuZKLYvKuu1Dh/RYR1z2g8+gw8tRXWPQcPbNCpb+xgVnsDupomFhslk8mc0POc67qYpkk6nSIRHyceHWBitJv46AGS43uwk10Ydh9hdZQKI0mlL0eFzyLkAZ/BZMf8VLoCtnVo/zAYzeMzLFpqoCoIFQGoC0NHrU1yoo/4hNSIPhMZhoHr8RzzvJ4C6oDWK65gY0sLGAYfvflmvtnZydS8UT9wczzO4PPPs+6GGxgdGZl+hwKA6poaXuh9DV1TKgm1NkKl+30mJkqTLs1ty7P/YKkTsTIEuttDLu/H7/eUzUfh0yGdTuL3QDbVX3Y/KcTJIIFRIc4AiqLwxvfez0NPeiaXeTywdPYQu/almdPu8uyjf0VzSwd7R67AmZI8s3a5zYZnR2lpcNm2q5S9qQIVni2kUkkURSFSdz6pKUHMqrDLYO+TRz0mVVXRfXPLCmgXska7Jx/7/QGS2XDZdn6vTd52MQA7P3za1m4TQpx8ruuSyWRIp9Mv+gZ8ydLV/OHJOWXLVHcYx3FpqIWtG77IkpVvL+s8mtMGifgYXfu3Ew5XMBg9bLiouR1d10nlGssWB3wmpgN+o9DZE6mwScTlBvvl9Jv/+z8u2bSJaxMJQoBPUQj6/ayqquK3Hs+M244B44rCnbrOvarKHxSFBxWFx4D1wEZgE7AN2AN0Af3ACDABpCkMoz/TuED7aB/1b1zBrxdW8+OP/hl7du481YclTjHDMMhkS9+ZiqBKc6PGJWvgnIWwdiV0toeY1RImmcwRCkM2MUo21k9stJfhgR4yhw1HPppS8DNJfGKcifFS8DMV3YuT6sJr9xNWx447+DmTYAASxWBLKutgaA7hadLFFQUaKywmosNS8/4MFWlqYkQ/eu9QjMJIAT/Q5LrMWbWKFxYvJqaq/OU73sFPV61iavhTBT6czWI++yx3vva1xCcmptutKLr5o9/l9vtryicJvjzPbT/9xeTj2ggc7M+WbacqOczUs+SsStKZ8hoeVZU2sUSWUMAiGZfgtDi5pMaoOKMdanC5rothGK/4YdkPP/BTllXcSG11adlP79Z56+uXYjsqz/T+NWsvfjPPPPQxLjinlPo0NAY5u4maai+9I9Us6Ci1ErcdbGbJijcBsG/Xw8xpKl2IMnlIuZdQW9c07fG4rstgz6M0VZduGQejOrVNl6AXGyvpdArF3FpWCP9QrVHThYzVSkXFzLVkXNdlwxPrePbJ+9F0gytf/TYWLlp07A9MiDOcbduoqopt24yOjpLPZvAHgtTU1p60892+ffv43lf/gfTAXnBdfPWdvO+v/oEFCxaUree6Ll0H9rPzuSdxbBNPIMSKtZdRV3fsWsLxiQkO7N6BnS9kGhgeD4bHhy9UQWNLGz7f0QZCl3v4gV+ytvHtk2VHcnl47LlZXH1ZDf1DYDf8mgMvfJtLV/ZMbvP0VhUtcAGrL/oIvT17aPD/cbKsSM6Ccev1BIMVaNk/lg017Rny0dbkJ5qEYDDE0JiPto6Vx3Wc4sUZGRnhwc99jnckEmXLE47Dl7u7Se/cyXvHx1k2zbYu8PGKCs7/wAdoq62dZo1iW8KySGazJPN5EpkMuWwWM53GzGZxslnsXA43l0PJ5VDzeXTLQiv+6LaNbtsYjoPHddEcB911cV0Xpzjs3jk0BL+4nCk/iuOgAKrrorhu4XfxsTblt1Zss3tw+bUKf9sKbUeZZAbg/jTEHHhbqLRsyIJH/bWY17yZi/7y/9Exe/aL+J8QrxQHdj9AZ2Np1M7WXTGWzTUxLdh7MMvBfi9zZrfTMauORMaHpuqQN9BUBa9HJZbV8YdrCIUrJtvilpnHsgpD3nEKNT811UbXCpMeqSdoJL7rQt6GnOmSs8B1SjtWVHAdC12xSGagqZqj1k8FmEgruN4WIlVS0/BMNNjXhzk4SINpcijUb1KoG5oDZlFeXDALbB8aomrjRjpdl9uffJLlDz3E3MP2e5eq0rV8OX+2bh2hUAgxvVu/8Vr0/AO8902l+8BUGh58/kre8Lq1ADy3I8CqpZHJ58fiEAjU0D3cRF19LdgJqqdUtBiPQ7iyBscBW2kiEJDPX7xkx3X1kcCoOCM5jsNAbzexoUE8Th4VyKkG/kgNrR2dR5006JXgu//xWm6+7vdly75/RxV/9o5ONm41WHjxH4mOD+LPfIG6Ke289c9rnLe6je17dRbNr59sKCazkFbeQH1jG5lMhtTo3dRWlr7uXYM+2uded9QgzMhIHxHv9smJnWxgJDGbxqZS5tZw/1bqI6nJx/FUIZvU0BTGkzrVdUcPcj69YR3f/upfcumc/VyyII5pw92b6tgdW8Dn/u1ntLa2HucnJ8Tpoaenh3/96/+Pvj078YfDvOfTf8/c2bN5/L67GBsaIBjwUxGuAMNDU3UEF8i40FHhp8GnkkRnyPUSqm2iY978l7XR/r9f+WcG7vsmH+0Yor5YbWMsA1/Z5kdZ9Q6++F+3AvDC1i3c94vvESKNT3NZ2hRkQX2IzckQyeAsXnX923AcB1VVMQwD0zTp7TpAbGyYZCJOyAOLaw28GpgujGVhJKsRCgYwFS9tcxfi9x97ciPXdfn1/9TytmtKN/y33Wnw7hsKIbPfPb6C+ed8hI7Q1/AV76JyJmzc1sCay7+Ex+PhwPZbmdNSmtBhR3c9i855Gwd23UtnU6m8SPegQltzBAUYGPfg83nxV6w47iCuODbXddnwwAM8c9993DA4SOM06yQch+/293Pfpk28N5Hgba57qNwg3cBXAwFevXIlr50162U/3pzrkrBtko5D0rbJWBZZy8K0bUzLwrZtHMcB20Z1HFTHwXBdPK6L13HwA6HiT5jp66J+RYdPNMJgNs9/PreLfzvK5EuOCzcPw7frj55112fBumAD7mtv4JKPfZrWNpmM5mzRfeA52mv2Tj7eumuciViUaCzLgk6LUBCiEzr7evzU1M2ic9YS/LoCLqRN0HQNRzEI+VU0zcHQwDNDAHImrluYHMmyXWyr0JlgO4UOBLs4BEoBNNVBVUBTCz+6NnPQs28cWqqP/jwUaqmOZSM0ykRMZ6xUKsVYfz92tpiZqOtEGhsxYzFCQ0MEptlmx8QE5vr1LLcs1u3eje83v+Hcw2IijysKjy9aRO2730l6bBRF1Yi0tHL1De+ksXG6q9HZ56kNj6CO/wVubhvnLS8tf267QqT5g8zuqCWagNGJBubNKn1Z9/UHaagLMJFbjUefIFKRL7tODU/4qK8Kksiq+ILtr+j7enFSSGBUnPlM06Rr3x4mBvrQbLPQ3ewLguahVU1Sq7lMrb0dt+CgWsHC5atesSfRdDrNfT9q5s2vKg3x6BuC3tE5nL+qkl8+sJIrX/fPbH3uV1yxojQU3nHhiU1hLjm3hg1bg1ywonLyuV3dAeYtey+qqtJ14Hk6avZMPme6MDixjLb26YOXrusy0P0YzTWlQMJwVKOq8ZLJ/4NUKoFmbyubJXQ4plFfVcgazdnthMKVh++a5599mh9++S189abesmL6APE0fOxHC/nKdx87row0IU41x3H44BuuRt25gY80ZlgUhKgJ3x3QeSQd4lvvvII5VX660rA+qdMQqSAfrGZRXSXtlV6eT2rUhQPMiRTCJfvSCjEtiL+6jta5C6g4wZNI3Hv7L+n+3i38+ezpawF/d4fGY96LuOjyq+nI7eGyZgufVjjXbB1TWD9s8NYV9eQVg4dGK5nX1oDtQtIx8Bg6S2ug1utiA0Mphd60wtz6IDX+wokib8OuuEptRZCkFmbewiXHddx3/OJfeNPqv518PBaF7tH5rFwaomcA1OY76N3xT5y/rDQU9LFnPdS0v48lyy5j1/bHWNC0dfK5kZhCsOF9TMSGqA1snOwEytkQT4epq9QZHIfamjBD4xFa2ha+yE9aTMdxHO79xS+Ys3MnmwYHeWsyyUxX9aRt86mDB8nt20eFZeEqCnXV1bx/6VJaAtPdGp9+HCDtOJOB1Ttcm4t9FqZpkcvbWKbNzlSWld4sl/vhhweGiA4N8rGQjTalLZR14ONRnTqfwYVqliu8Lr5jJJgfNOHxiiaU697BlR/7NI1N048UeTlZlsXAwADxWIxAKERra+srsi1nmibJiRhmvhDIUVSdcGUE33F0/pwIrusyONhLU3DD5LJf3b2XVYvSzGk78nbv+R0G48k5XLVmxeSytAWjSZXKSg+Vh329jhboxHVxORToLNQd1JTCxC3HE+h8sfrGoOXw6ii2i+2ApioYWuE6M56tprGp5cS9sDhtpBIJUrt3U2OaHP6n1ZdK0b1+Pedms+weGKD7Rz/iNYfVtdwG3DF3Np9+7fl4dYUJGx50A9hLz+WtN3/wpE9Idjr6xf9dTMg4yCUre6mY0k//49+FeMe7/gJdV3nk2RouP680mdLOLo2Fc6o5OKjir1gJ9ij1VaVzTyIDhrcKn64STXuJVLWdkM/atm0GB/oYHuwB1yFUWU37rLnHPdHToQ5+ccaRwKg4s+VyOTatX8ccotTqpT8/04HdaRW/z8vsyJH5FEkL9lh+IhVhQEHxeKltajljh0LkcjnSxVpOoVAIwzB45KHf0a5cz+wpHdz3PKJyyYVLyZk6O4c/Q8ecZfTt/Sprl5du/gdGwFGbUVQv/mA9VeFCM8F04eDoecydfy6maTLYdTdtDVOGx4+pVDW//qgXjtGRASq9L0wGDBxgaKKDppZ5k+sM92+hPlI6lokUBAIBDFVhLGFQU39kMOHPb7yYb77zCfSjNJT7x+DbW97PF/791hk/QyFOBx98w9Vc2/8Qb64/cjbrviy8Z0+Iu/78dQSKaTcPjGkEK6uI+iKc31ZDjU/jiQmN5U0RwsUv23MJldbKIH2Oj/rOeeiGQT6fJ5fLkc1myeVyZDIZspkMViZFPp3ATCex0knsTBozk8TJprGzaZxsGjeXwc1ncPNZ/vD889z+6tRRhz+6Lrz5Pp2mtlncsKaFypCf6pCP6qCHkE8n5yh8f5eHD1zQzOODOis7a6nyq1gu7Iyq2JqPc1qCk/uzXNg8pjKvPkSFt/AZjGTBVH3EHS+VNfUEQxUYPj+6rh81YJLL5Xj055Vcc1GOiQT84rfwwDqNlcurecub6tjZfwl1rZdxwby7J7cZHIM9fYu55JrPkk6nSQ39gLpI6bqza2ApcxdczGDX72ipK50bD/TrdLaGMV2YSPqwbA91TWvQDu/JES/K3u3b2fPMM+j79nG1ZXFPLMaaWIyGGbZxgR8Af3ZyDvGk+K0Gl1VD1ZQ/J9uFL2w+wGdDObwKPDgU41ddQzQ6OeoVl25HZTM+/nlxC6sjARzXZcPIBHsHh2nOp7jM5+I5xi3CXhOe8FaTW3khy69+LZH6evAF0AJBtGAIIxzGG6rAHwjg8/lecvDSNE02Pf0kI117adZy1Ok2WVely/IRbu1g1QWl8jxnIsdxmIiNExsdwcpnsW0br8egKeLHpymYDiRsDdsIUFvX8KIDAKZp4jgOjuNgWyauZeG6Fth28beLgg04qDiogGVa4NlKRQAGR7Ls2r2Xy849+mQn96wLsHj+lVQGfQS8Gj5dIZ6HWBZCAfWkBDpfrIEY1IQLmazRhEU0YaFrDpoKeatQK9/r9RGq7jxj7xHEsdm2zVh397TZo1vGx0ju2s6K0RixiQke+u53uSmXK1unD7i1rZnPvPlSYqZDznUZ1v0MrL2a695100l7H6erX/7sK7zh3J/xo1/u4kM3lEYHOg786J6lvO/db+D5XT5WLi6lbw9HoTJSi0dX2LSrCo/XRyRs01DvRS+e/wbHdRprKzFdyJo1hCuOkf59DNHoOLu3P01rJE1jxEJTYDylcHA0QKR+Lp1zystD5fN5stnC+drMpcE1UXBxUVB0L5WVNXiOUd9cnDYkMHomMU2TO3/2Ux762W1MDPSR13TWvOY63v3Rj9Hc3HyqD+8lc12XH3//e/zq6/9IIBvHBuyKBq5994e46cO34Pf7cRwH0zSLdYpMdm95jiXOGMGjtIV3pBQaKkNU+45cYVsSKg0FBQVQyKOA1483GEbRdBRdR9UNVMODpnvQdB1d19E0bXKo58vNdV3y+TyKokx7Ys1kMhzcuxMtnySkmjgoxB0PeAKENJuH7/1nbnz9nWWZlN/5VYgP3jSf+9aFWLHmP+ga6Gd+40+pnpKMue5ZnQvPa+WpTV4uXFPqSu8b0ahpey8+v5/BgS6qfU+XDYs6MNRK57wLj/pe+rvX0VJTakwMxzSqGkpZo8lkHMPZjnfKf9fIhE7AsNnfNUhPX5JsdA+Z6C7sVBex0R7GR/v5hxtnPvV89IcL+M+fbJNAxBluy6ZN/OhL/0h6/27SiTjpUCXX/+WneNd73jPtTeKha9fp2lufz+cZHx9nZGSEkZER9u3dw2Nf/EtuW5I/6jZ3D8Mvx/2srjFQXQfNdbEdB4/iouFiKA4GLrri4lFcDKUwZNijungV8KjgVcFX/O1VwaeV/v1iDObgOxPwuem/8pO+9jy8cTbMriwMSRzPwXgWojlIWipJSyPuGLialwnXh8frx/EEwVdBzqgkVNNIe0sz7U3VNFVX4vMH2JXwsrK1cJPquvDCONQGwHEVbDRs1EIhOc1A03QU3YPi8eLxBfAHKzA8Xn7xgz8nuu+H9O6AGxfDokYYT8NPt+psjvl518d/RqP3x6xcXPpgHnwqxKpL/5Wqqip2bP4Vi9qHJ5/b1+ehc/EH6O56no7afZPLJ1Lg8Vbi96j0jSjU1oRI5DqorZNhdn+qXVu3ktu4kdHBQdakUlQA47bNwwMDvGWGSVK2ARsNgzkn8VrgFH8sCo1kR1EKjeWp5yVFQVEKrRFVUdAUpTDzaXHdLIUgkuI6ZEyLKrV0zYs7LmnyvC1cfh3sSuX44Z4+3ufLM6vYXBnJmezI2tznBLigsRYySWrNDKs9pUCo5bg8MRKja3CYNjPFpb7CLN4z2ZGH9d4qrOXnccWll9FZVYGhFjoysm6hzEcOFVPTsTQd2+MFjx98frRgED0YQg9X4guF8fv9eL3esjZWKpnkufXrUEe6uaDCOqIjZsBU2eVr5dJXv+6MzNQxTZPufbupIEnEWzhnu0A8DwMZjWDQR2OlDwNI2iqmUUGoMoJlWTi2jWObuI4FloXrOuDYKK4NuCi4k4HOQwHJw1vEDmA7hYC647jYuLhOIYszZW6jpc7hD48c5NLVMfwzJE0NjsGOPfNYsWQhiZyC7ao0RbyMZBTapi/d+7Kx3cJ7sqxD76vwKbiogAqqjqIYWK6CmY2hOFlwTeorKcuszltwYFijrWMxgWDwqK8nXhmmyx59bmSYlVqWnX0j1Hb1481m+cF3vsNfHlbPOg78bU0Vq1bMJaAp9NoKPd4wb/vU3zJv8WIikchxZx0eL9u2GR8fJx6PM9LXjWtb+ENh5i1eRvAk/L1ms1kGerrIJhNYjoXhCdDaOeeITgTTNHn41xdxwYocD697gTdcWer87xuCnokbWLJ0LoPj9bS36OzdD9EYxNMGfl+QjiqDoBeylsJIVqeiKsDc2ZXkLLDsSkJ+nYwJinH89eYPl0wm2bH5UVZ0pKYtLbNnyIOv5hza2jvJ5XKMDvejksOnFzrC07lCR0ptxIOhQt6B8aROZVXjcZV5EqecBEbPFLu2b+dLN72Nd4zu4tUeG1WBURtuTWk8E6zj3De/nY/907/g9/uJRqNks1kMw6C6uhrbthnq7yM2OIjr2KCo1LbPor6h4ZQEilzXxbIsLMsqBDhzOXLpJH9xwxt4TXYH72608RUPa18K/q3HIN1+Dp/+5P8j4PGguoVGnmlDCpOVR46unpR34JkJhaaAXmgHKSoKCpqqkHAUvKpKpUdBVxUMVUFX1cmMxsOZxUaj5RYbkS7sPNjLnXfdyf79ewgGA8xpb8UbqefyV11HTW0tE+kMHp+fSCRSaIQVA66KpqMWA6yapqGpauEmyXUKjVHboufgATLxUfxYhfqBGISr6mlqLATBc2aO4b6DLArnj6jZFDehJ6Uzp9bDL+54M+99U+nmPZ6Exze3UllRz+9+X09tdQt5LcvHb7YJ+gtv3nbg6a2VrFhaRc9wFfM7Sif07d2zWHzOdQAc2Pl7OptLDYN4CghefdSJksbHBgkbW8s+456xFlwlRG/3Psb6NjNycB2G2Y2SH8avxKj0pWiK2LTXQfiwbtz7nys0Wl933lH/BAD4p9tb+Mi/bqampmbmFafI5/PExkcx88WeTUUnXFlDOBw+bQNtr2T/8dm/Ifvz/+MWd5zK4t97yoH/Tek8EGrmtX/2Aepa2giEQqjpJF7bwgbw+ojUN9K+YCHNf2JtPNM0SSaTJJNJUqkU8YkJYgP9JIYGSI4MkR4ZxhobwZoYg8QESiqJkk2j5bIYZg6PbeFxbHyug09x8OESUCCoQFCFkAIhFX6WghWzYU3k6MfiuPCx7fCt4xsx/rLalYSHgFtWzLzej3bA0hpYVf+nv5bjQqwYUB3PwUReJWFrpF0POdVPXg+h+EKo/gh6MIK3ooZgpJbK2gZCkWoCoTChcBhV9+KiYCsa//ftb3Ku+yvevPTI1+uLwYdvD3LlRctJ6xp1TXV4FD+uCXnCVDQuYunqi1jQ8tRkR47pwFD6GmprW8mM303VlEDVgQEPnS1BMnmwCTI+4SVSPRt/IPSKHAb8coqOjbHprru4IpXinvFxXpctzWb789FR1iaTdEyzXRr4ocfDzc3NMw63PxqnuI80kAHyikJeVbEUBUcpRpwUZfKa7tE0vLqOX9MIKAp+VcWhEOTMFH/nVRVHUbCL2yuqiqaqGJpGv64xN6hSoakYqsLDQzHO100GUjleiMaZp9i06w6mCz/uGuVNepL2wyJeMdPmNz1jbI2nqdIU8q5LVSDA21uraSt2GNsubI0m6RmPUp1Ls8Zb6EQBMB2Xx4ai9A4N02mludh37MlxtubhaV815sIVLFlzLqFQEI9uEPJ5qfXqBLWjBy7NskCqhqlp2JpO2oH+XJbX1Doc7fK7K63hWX01nXPmTL/CSzBZ97XILU6Odej+aOpv13GgGFgEt9iuo7AMp9CT41D4XfgHQ8ND1KppRpM57OLLRAI6NaHCX2pXXMUXCNJa6UEBBtMQ8YKmgUFhIhnXAdt1cZzijwsOUyfzOnT0zuTdn0qh6akqxaBp8c946vfjQHwfnS157nlwL6+7JMWx3PNwI6+7+Fyg0AY/OK7iC/hoq3tp7abjDXSi6WiaF1UzJpMZjnWOHRjow0z20l47/W2s6UD3WJDZ85ZK++8scHj26PMjg6zUCx3WfbEE2e0HaDctvnDrd/n86BhT01ZM4NaqIO+/eB4eVWXchn/OBvjg9a+nIhwk66rkVQVL0bAMLwQCqBVV+GrqidTXU1lZidfrPebfmeu67N25nVhfN7HhAUJunoUBm5AGSRt22WGoaWbNJZefsEz6XC5Hb28viqLQ1NTErhc2kxofxKe6eHSFWdU+VFWjK6ngeiuZv2R5WSD4e9/6AO9/wyae3RKnJrSXjimVKe5bp7P2ko/x5LZ6glqYBVVQGwLLgf2jKn1JjXNnh6kIFG4A+iYUxtwgbe3VDI+Cx2Og6xqqHsTQCzeLvkDgiDbW1BhE6cfEtvIcPLCT5a3j+Gf4uDZ2RVi++jKG+rtoiuSPyHbPmjAcV2mqKQRHTRdGEx7q6lvO6BENZwkJjJ4JotEof3X5Wv4ntXuysTrVE1m421tLbuVFXHn9m5lVEaBWcciqBqOGDxOFhX6NKqXQALJcGLFhQPOyeM15f3LPytSTimnmsbI53HwWM5fFzGaxcjmsvAlmDiwTbBvFcVBdZ8qMqoVe7H/5xtd4f3oD500T5HRd+OReA2vhJXz1wx9iXzrHcDZX6NFWoTHoYV61H89RWuvPTzBj8NR0C40s0ylkdJg22CjFRmWhv73wuxi8VCCaSPBf//kVOq29vLszQ8gDz40o3HHQw4XzG4j6mhmmlssX1pNxVIbMAMvmzWft4vml1z080Fp8fcuF/dEkiyIm1VP+a1wX+lMKPWkvs6orGc6ZLKpyj1rIPpqDhOPBSQ4zHn0HqxaXGvWPbYSn7p/DeW0acxs8TOS9/GaHwcoLI1z36sIwhO4B8PhbGIn6WDivYfLkH09DLHM5kUgd6VyGgPYUFVMClvv6w3TOfzWqquK6LuPj43Qf7GK4dysTgy8QG3gSvzuIx40S9iSpDeVpr4XGP2H0w/rt0D0C77hs5vU+8cN6vvi9AwSOs4ZcIj7BRHSAmqCJv9jiMV1IplXSZoD6pldmTbPT1Z0//TGjn/8oH1Di0z5/R1rljlAr775wFbvxMaF7iFRUsijoIZvNsjuRxg/YmkbIY5CLjmPGozjxCUjG0TIptHwWPZ/DY+XxOTZetxDIDChuIYBZDF6GVAgoJ27m3Kn+bgI+swJCx2g7fWIHfP3oc5GdNBMm/Msw/Osxvn//8BTcsgwaTlEJx0R+akBVIeEYjJsenhhL83/vOrJkwSF/2KGQ9LTzhvNq+N/1OmsWNHLB/EIWRDIPt28LUTu/g1ddUsGeAzA2CrmcjidQjzcAa5abJJLQ0wPpLHgMA3/QIGf6MHQfum7gYFBZXUdTc6vccB+H0eFherdto27nTloch7uLgdFDn5wJ/Hx4mNpcjktsm1Bx2UZVZbNhcEN9PTWahkkhOHkoyJlTFCxVxZ4S5FRUFVXTMDQNQ1XxahpBTcOvqviK2Z0A+Sn7MhWFfDHQ6U4JlKqKgqHr+A5tr6rHDM5uVmFxoDQpUtZ2eHIkQQ0Wc3WH3lSOnkyOMVchFAozuH8fLekoF2l5gsUbsmctnU16iLdffD5V/kKDwnFchhMpBkZGSI6NQmKCCjNLi2JTrcELsRQHx8aJFIOk/uLr52yHR4fGGRgeYZ6d4cLjaDo+l4OtwVqql63k8pXnkNM9RF3IKDq2oqHqOgGvQcTrocrQ0Y8SM+22IOeFeYeNZHZc2DeRY+94CtuFccXHBSuW4vf6cFWFQ61MVym23w51Qitq4d8c+n9WURQVVYVC97mCqhT2X3wloHiTc2iZWzx3TF3oulNXAOfwG6NDwdLCLwWXvOMSSyep0G2aAu5kDeaxHAxmVDqr/ZiojOcUfFrhGKdTbJ6W39kp093pKVN+KWWLDvsnCgrjqUHmzU5y9/37uO6yJDMxHXjgsSauvWjN5LKsBQeiGo01evGzcHGdYpjYLQyldSc/kqnvoPBvRVFR1OLRHMqkZup5+9CWUz/70vLCltPt3QXFBQXG4i6zasGY4do7OKERqJ5PRcUMNxTiFeVQ9mjPQB8r1exku29nLEVy5wGeHjhI7sGHeP/+Xg7/q/hewMNbLltI2nHZFM/yKzvAu9euxl9TS0djHY3BIzMIcy6kHUi7kEUlr+pYuoHjD6CGK/FVVeOvriVYGaF77y5qk/3sHxxjoS9P3ZQLSiKbx7Rt0lqQ7qo5XHjVNS/pc0gmk9z2rS8T2/c8s/UxHMdha8yDGaznHde9itUdVWQs6Eqq2BgsaQzQlVRIqiEWLFs1OeKxr6+P4W1vYOUi+NGvDnLj68bKRzT+ponzLvoAy8ONR3SA5W1Yd0DjwgUR/J7CWWDrgIJj+KgIKOAWMtwtx0VVXQxNQaHQkaapLqrqoCkuquKiqYXvuqaBroKhFs5Bz+2H1cV+tazpkMm5eAyF4JThVPuHDbJGJw0Rl3iyNDrF79OoqTAwtELmaDKvU1+pF/8/FPDUEz7BNf7FCSeB0TPBV/7mr3ndz77Mohla0R8eUZgd9qN4vGiqiqIohaFPrjvZMa0phxoHTDbkHBdUTWOyK9kttuKKPczgokxp9Ckwua5SbNyVN6JKjcOpTZuSQ/sDpfiPrO3yvJvn1hVHf39jeXjfNp0LmoKomoGjqqhaoWfY0TRyqqcw9MrjRTE8KB4fhseH1+cloXhprfDi9/nweX34fD78/sLzusfA0HU8uoaha4XfmlZapqlHDMtKZbLc8vnP89VlB6mbJjP+a5s15sxqRQnXE66u54p5lbgurB/WOcAsLlpxDsVWHooGKiqKqqAqKpqi0JPKsyBiUnGU0RYDaYVk3gd+H/MiR//MADaPQW1A4cFHf8Fbr/oufh/87w9h0zOwPAL1QYUdwzqDKS+3vLqVHfEwtefUcdEFEZ56DjZtVqgKe4imNM4/v5lVK+swNIVtez00hJeRyubY3rUTn7KX2HA36VgfZmoE8gkqPXFqghlaahzaasHzMsQRTQv+v2/Df3/06OvYNrz13yv58F9/h9dc97Zj7jObzTI23EVzpTltZko6BxNmJU3N7S/hyMWxWJbF0NAQ/T09fPnP3sUvzANHzRQCuHEQ/ioC4WLw8lAm5ssRwHy5fDkONyyGWccYcfOx7fBfi1/8/k2nMOFKrvhz+L9Np9AxY7oKpluoNme7ChbFAIOiYBf/jaLgKiq/Hcrwk9c6R+1hN2145x/gpkUqfs2l0uNS5YVqH1R5OWog5OV26w445xxYM+vo6zgO3PBjjT+7qomFjRX8ZEuYv37zbHzFSJXrwrc2GLTMP4cLOjw0hovbuXAwprF1SGV2UwVza1V8emH9oSQcGFNprAmStQ18XgNH86IGaujsnHf0gxGkkknyQ0Ps2LSJcwcHMYAt6TSBWIy5h63bk8+zPh4nb9ukFAVvJMLq6mo8xeu7X1ULmZyqynSX2syUn3wxaOoAbvEuTtN19ENZoapKoBjsPJF/zgcUCPmg7rDv1nDWYl8yg+U6GKqG6/VzQahwXAfHJ9iwcw9mPg+axorOWSxpbkA9jhNhNJOld3iM+MgQTiKGP5smEY+TjEapzKU51+tMBkkztsMjA2MMj4ywyMly3nEESZ/KwXP+GsLLVnH9mhWEvaVGQcaBUQfirkpeUUHX8egG4WKW6S5bZW4VhKd8FtGszYMHoyzwmSwMuhgqRPPwZEIn4wmxav4cmiNBPMdxkrHdUkaiTfHHKZZBmNJJXgq1qaVSCCrFUKpSiLcqauFmXCmMTpr8DSiqcsQQzS3RLK3+8o7wQ0wXdsUU5tUF6U8rdIaP/TmfaH2JBC0dUZ58boi2+kFaZsj837pHx6esZN6s8jIhB2LQWndqa4nO5MAwdB5jREPWgrFMAy3tnSfnoMRpwbZtdj//HBUDXbQU57KImzbrDg7SvX0rtwRyfOT2x/ibrl6mjknaBXzWA4srdVbpFlFH4UHbR6i6huvOWUTSE4CKSlqamljR2kTYc/zZhNli8HTAhrynlPzzwJbdPLl1J9VOBp/qMmR7sKuaeNsnP0dHRweqqk7+HOqIPZRBeaj+sOM42LaN6zg4jkViIs7/fukzfKx5H02HdUztn4Bv7a1i+YVX8Jbz5hDyqgykFRKOlzm1fraMgs/nQ/cFsB0HHIf1j/0d73/zOLbt8uNfvcB731Sqx55Kw71PX8ElC95AY+WRN43RNOwc87GyM4RXV8jZsHsclp+Ar6Rpw44eaKqy2NGVwlBtQn6XbE4hmVOZ0xKgvcHD8AQciNUxu8VPJFTouHRdSGRhaEKhucZH0KfSM6bQUutFVQrXlrFUgPpGmbztNCeB0VPFcRzi8TjRaJTY0BDRAwc4+MILjG7fjr1/P8bwMKFEgupslrt0mx8dYwToU1nYlYf3nIGdEb9OQm0bXH6M+kN/SjAg50DWLlxEDgUBDj3Ou4Uf01GKmZqFYICFguUqOBT+baNgKyo2Ko6i8tR4jk+em5txWOi7HjD44MVtfG+HzrmtXnRNRdcUcraGohv4vB4qvB40XUNRFDRFRVMLje60oxA0KDa6p3b3Fy9iKMTzCh690HteWEUFFBS12KNebJhnbYWAUchs2RG/m7GRGFdWwNXzy483b8Gnfmfwnld18svdlTQ2hmkKujhWnrGJDLlckmw+jatkqK+0CHuz1IZMmqsLQc/Iy1yPPp6Gg8MwGNUYTweYyFfi6nXYRjNPbB7klks2cfHi6ScE+L/fa7TPamfL8EJu/Ni3CVeECpMN4OK4dildARvXdUimMjRELLwzNOAHYga1TXNO26xR13XZvXMnmx55BDOXY9bixZx/+eWnRQFw13UZGxujr7eXt9wtXQABAABJREFUkV27iO/cSXL3brL796P29xOIxYik09RZFs0U/upvrYDPHeOm5ZsxeFUAFp76t3hcLBeSDiSLv1NOYTKT7QH4wgwTlr8Qh893ebi40Y+tFDKhcq6Goqo4aiELylU0XFVFUfVi5psGmoauHQrmKBiqWjgvqSq6pqGrh+oeFr8Oh513Jv/pFs9DxcX9sSQ7D2zh1svzHD5C1nHh/z1p8M4LO3kuFqIhCJ1hF1VxcCyLfN5iImuSyubJ5kzyplWYFMSxUV0LHQev6uDXHEK6S8QL1V6o8TPj9/N4fO4Z+Os3QfgYAZ1P3A1f/ziMTsCWA7B/yIdHr6Eq1MCCtiZCoQp+sb2aT7zlyBTeVA6e7vVwxdLyXBLTgU39KsvawyTyKrGcAZqfxo7FhMMvb+TDNE0ymRRmLo+qKQSCFSe85tnLZbivj6p0mme3bWNFXx8+Ctmgdw4Pc71lTZuBaQK/1XXeWF9PjtIQdqs4BH7qEHa1OITdq2n4VBW/quKdkhl6ojgUskyt4vGZgK0Up71RiiNUFAVHVRnBYq3v6E3rPSbkVQOXQlb7oeHZCsVh0u7kQOPCoGOlUF9Sp1A3VFOYcZKlVN6kZ3Sc6PAQXV0HsQZ7aM2lOM/rFF4PSFk2D/WPEh0bY6mbZdVx/Dk9kYVN/hrsuYtZtXgxzZUhWv3eI0bA2C6M2xB1FdKKhmtoaF4dzWfwwmiSN9ZOf63emVIZU4PMrQszbmlkFA+qz09lwIde7AD36xp+vXA+fLkcK+BqAjEblsxQ5SduwpjpAcNL5ymY+yeeNfE0DODaNnf/cSdvuebIGq9Q6Ki+88EK3nzFpaiH9WIOJKEyDIHT9FRzPIHRnAXDmQbaJDB61rEsiw3338caJ02x4hi/3NOL3bWXy+0JfrptPyvHB6h//iBLge3AN/zwjaZCPfepnsnB950K/mv1HPIojNkw7kDMVUgqOjnDixYIogcC6MEQgXAFFZWVVIeC1AT8+KakNa/Pw6qawmt85w/rmRXby9URqyyJYCAHXxmp4uY3voZgIFDW8e0oWrHutYaiKaBoqKqGrhU6/QxN4Wd33c17q1+g8SjlSvfG4I6JDtqXXsj1q1vx6QpPDkKDv3BvZVv2ZN1jx3XYur+Liy+8l8Za6OnPMdC3jfOWl/b3/HaFdVtvYe2idpZ3BPEdVuD64X1wznzI5SFvKeSswr2y4xavegpoioaqqRi6imFo+LwqPkNh3/4+tm7fjcfwcNlF51BbXQqaJDM2j25O41EzXL5cKSv55rjwQreKZvgJBoPo/npa6448mZkudA0pdDT6GUso1ER8k/sZTkpg9AxwXI2BM6ogguM4PP3EEzz285+jJJPYhsGSq67iiteXZst+OYIZruuSSqWIRqNER0ZI9vSQ6e8nPzSEPTICsRi5sTHGRkbIj4+jJBJ4cjkC+TwRy6LRcXgTEJlm3+uP40a/VYd1mRP8pk6SCRcWHkdj6VjF/6dzaEKRmQe+uIf9ntn2iWPXynvjLBN3ZD+3rSw0gnP2YT9pyCUK/zaLmVqmC5ajoLoKlgu2UwzKuhTrKBVudw4N6c8UhxgxNRiqqqiKgqpqaJqCV1NRisGPXJ/OrLojg6IAHh2+dr3JW3+0h+svU6n1u9SHHdrqoLGKow7dOhHyJvSOQu8YRJMqqZyO5Rpomge/30ukwk9DrZ/22R7me1WcYjKz44LrDPDOC1ze/y8hekfivPVid3J2+lQW/vdeDd1fy2vWVrFgaIiH7vo/3n3jDTBDUCWTOnbQJew3SUzEqK6tO3EfxAkyNDjIz7/yFTw7d9KQTrMwGETfuJHv/OY3LHnjG7n82mtfttdOJBL09fUxtG8f49u2Mb5lC5l9+yYDnlXpNLWWRROwADjnOPa5l/LZlo+mSoPE0UdF/8nsaQKYabc4/BaFrKuSUxRMCplOpqJiqiq2WqiNZ2s6jm7gaB5sjwFeH47Hj+rz4/H7CQT8BIIhguEwnlAFG277LgfSw3ROM+zcduFzB7187T2vpbOqkFa6Jw1bzDBOpJHr5tUSsxT25b1c1FJB1oFtaZU5VUGqfDopC/otHd3np3NKVqo59ca9eCNfmDCmECw9lCVaOAcdGoKq4Goaiqbz/PPP8YbPf4Sb5ya4tt1FUeDBXoVfd3l439pWKsMh+sbC3Ly2BduBRM5mImsTz9qQMnmuz6GuJkBr0ME2s7hmDs3O48HEq9gENIew4eBRXZK2xVjeIpYxSWZNMrk8uXyhRpRr2yiuhYaDR7Hxaw5B3aXSUwioVvsgXLyeVhowljp2YNQsXhZqK+HKFXAlWQrzz/YRS8LmAwrBuI+vf7ca1dtBe/syLlkxl9pKH0Ev1AYshuMW9RWlppShwoJah67hHAtb/CRzJpUBD33de2luqKQQwtJA1VAUHUUzUFUDrVgvT9f1P2nY/UR0nFw2TsBbGJFg25CMJpnAQ1VN/Wnb0TOpGPyc1dLC7sFBlts2BnBRVRV3R6NcbllUTVk9Ctzn8bCouZnxQAC/phE5jiHsx2JO+clT/N5MCWjaMDlkW4HJ7Bz1UP1QRZn88R7jeCbyWfaYWeYZR7ZPRmxIqgYrIiF2mdB5HG1F1y10ytg4WI5LzoE4hSGItu3gUKhPWbjGurgeA29TgMbGVhqXrQIcLMvi3h27SGzaSHt8mLUeeH17A7Q3EDdt7uwbIT4+xgpyLDtK2+4iH1zkjmHvXscTWx/n0WA13jkL6JzViWV40H0eqvwB2oJe6nSVOlzAAteCbI71E3BpTfm12nFh21iG3WNpXCCmp1ndEKIhYAMZTDfDcBQSroame3D9PhyvzrhNMVCg4BYDBIU6rzoBXcVvaEetPX8sWjH4fLRU4r4sNIcgmbfJWi4+XSF0WHS4woCD8TwNSp6BWLEAlVI4Rl3T8BkqXuOl/10fTdCnMxaH+mqNOe2V3PPoBFecZxGaco2KxuGRJ0NctmrVEUFRKPzdKafznFhuIWNspozWeEYjFJZh9GcjXdeZvXARL+zeRSSfZpbm0BkOQE2Eu3rSuLhc2V7D8wEP69bv5UeGyzebmbb83RovDKUT/Lp3jBvaamnRoRAuc5m8smSShUbmWGm7qAM9diGAmlJ0srqHCcNHtMLPQculMTfINQ2lBBHTdtFVaPIqfK4hylfvuZ83XrCCXC6Lmcth5vPYZg4nn8exTFzbRLEsFNtCcSw0tzCxWz5t0tDq0h01SeVtWis9hH2lL8rcCEzsHSQ6Oswftyh0Vum0+FQqLQWfAZ7D2ljzlzXy641e3nZtjrZmLxueaWXh7F4qip0+Kxe7PLv1hxzYfT33r9e5ZFUHly4t3XTrGlQHgeChz+zY9+5Pbenm27f+kqXNI1w4P0UuDf/2xWpidhtve/uNjMZyVPpMqsMupq1w9+Mq89sCLCk2xFUFls9y2LAry1gqxEWrp7/YGgo0RlzGJixctXRGzppgnAaJKeLEOO0zRm3bZve2bbzw+OM8eMcdvD4W4xrHmZzVcZOq8vP6eq695RYaW1sJVlZS29CA/xj1BjOZTCHQOTZGoreXTF8fucFB7NFR3PFxtIkJjGQSXzZLMJcj4jiYlsVoJsNwOk0yncbJ5fCaJtW2TZvr0gnTDtuayUe98K1jZIxuyBSyjd59BmaMPpCBiVp4S/PM631kG/z3aTDhyCcOwtevmnmdbWOwfgA+OM2kHqfKx9bDV94F3hlaz7c9Ax1L4JJlJ+51h6KFOqCjcYV4RiNnGyiqgdfrpSLkp6HGT1u9l5pK7U+usffl37gsboxxzxMjeHWrkDSjerjx1Y2cu7iUYvGVPy7mDW98B08++RSKU5hEwBOo4dKLL6apoXBL3TcOLdWFRsV4wiJvOuiqQnWlgbcYnc+YkLRrqatvemkfzgk2MTHBx179atIvvMCl2SyNjsNWTeM5v5+rFi2ic+FCam+8kUuuObLekOu65PN5stksmUyGbDZLLpUiH4+TGhtjsLub4e5uUnv3ku7pgZER/BMThNNpqkyTGtumkUID70SehpLAPwThK8f4qD8/Bu8JQ0AtBjDdQhAzC+RRyKGQp5AllqMQwLRVFVPRsFUNR9NwNB1HM8AwUA0PmtfAZ3gJ+Lx4PB68Hg+G14tueAo16XQdTTOwNA2zGAS1DC/4/HiCIcIVldRFwtSFglQH/Xi0UnDMLGas5zkUqChki43Hk/x/H7uZj1RHeWOdMzk77pYEfO6Al/dcdT5vWdpK1ob1Expbcj4am1tY1lxNn+3F1AwaKkMoioJH1+mM+AkZKlET+vI6zZV+xmwNn2Hgqlqxvp6OquvoxqHJKooTxR2aJE7TJifqO1rwbHx8nE++761Y/S/Q6LW4eE4ll86p4g+jVfSEl9LcPoeKiV1cWh0j4i10Cq0b1HkmFmTuwsW8cY5yROfXUBq2T3i4dG4lrm0zMJFl05BFImfjZBM4mQRqPgnZCdxUFC0fx+NkCagWftUmpDuEPeDXHBzbJmfaRNMmiUyerrEMPdkR/um6ozdbtg/AH4bgE2+d+W9vqkQaNh+A/cM+xjPVZNV2rNByrr54CdUVYQIeg5qggc9Q2HBQoanGwFANxjJevMEg4ZAHj8dDRch7RCab6RSCmY4LtlOYdKRQtEYrTjxy6P/MQNPKg6gT0SiONU6V/8jeg7wNYykvtXVNp3VwdLiri3rTxHQcfv/447w6m51sT8Udh2cTCRL5PJrrEldVasNhgg0NXDjlPdmUBzYtCkFNi2KWJkzWBoVSUFMrBjZ1VUVXFDxTgpsvZ7WOUWDQzpHJ52jAIay6ZF0YdFU8hsHCcAAH2G3CbL046z2l28VDj2FqHccju4PLl5VniZevW14kyQW6ursZWP8IkYO7WavmCBcDYNG8xUN9I6THx1ij5ll0jPtCy4XHcgrdoVo6Fizkwo4WRl2VQVslpemohodwwE9bwMdjrsb1U5JvDkzk+OP+Mc4JWCwLFd7x1qTKUykPrz1nLvPqjrwq5RwYyiukXQ3N46E24CPi1cqyrXJOoeZfbtrgqYZX1/Bpf3rwdGvMJGtmCRkOfs0layskLJXWiJemcOkD2xmFhVXT7yNnF0ZC5Www0Qod6uigFn50XcfQFdRCyj8w9X9vqil/BWUltFwSdg8dLRZDwyPYlsnzL4zguoX4f94Ew9vIBYuXUVMxfU/TnlGoipSCKeXVPtXDlh86wsPWUZgSXS09f2jkFJO50UzWkT3UplQUtTCy6tAIK1UpfsdVVFQy2Qxuto+myPQjjxwXDoz46Zy37IjyWuLsMD48TDA1wXgyxcH+Acx8nt5tW7jMSfCvD27gP0JpVAXu64+yde8BPj1DFrjjwluHFN7UGMbr8RL2+6kL+GgNeKn36tN2LszkXxLw6UWQNC3+d9MAXWMJKlSbnKtgaR7etbSRbVYF1zdAw4sIQuxIwm3dI4yMjTI/bFLpcdkb1zA1H395WSudNYXv+493wvJaSFoqUdtLzgijBKqpqKqjOhIGVStloxoqG/bt4KrLXuAXv4EqIGHv5lN/kSSdgS9+DVJDsLZRwa8rPNYdYkJt5h8+cSOtDVU81gWXLp/xsMts2d7Nt7/zHf7j/dEjagj3jsJHb23iR1+7icrg1Ama4PkDGhkrwEXLSqN4Ell4YneY11wyTYbRFAeGNXRPgLa6wjl8JKETqZW5Kc4AZ/5Q+kwmwz0//CGdfX18b906PptI0Az05fMMWxZ1uk6rx0MO+Mf6et79kY8wkM0Si0bxOw7KxATW8DDu+DjqxARGIoEvnSaQz1PpOFRTyDY8dDm3XJfufJ6D6TRj6TSZTAZyOYKWRa1t0wG0ctTO4T/Jf6hwVTMsmyGz5YMjCosqQ8RR8WvlN5iHGhqHmkRu2QlXmebPYJplxca/e8Q6yuTDwmrljZpDIy+VKdsoU7ZTUHBcl3Wjg/x2VamI8eF2JOBvD3i4ssmH4jg4xdmddRx0wMBBV1wMxcVT/O1VwFPMGPVN/dEKv/1/4lDMjx2A/7p65nWe6IfuJLxz5nPnSfWJZ+Dr75x5nd4o/OIA/NUNx7fPZKYQ9BwYh4m0Rjqv42BgeLwE/T5qqvy01ftoqjUw/pSU3+P0ldvhU28+9np/9aM6XntxMxcvzE0GiOMZ+MOmEA2zzuPSi8+jdwwUN49pWVSHXbx6YYjYeLLQiG6q85HOAt5WKquOcqdyitx44YW88amneJtTHvywgU8bBvaCBcxavpyVlZV4LAs3nyeVShFLJkmMj5OamMBOJNDTafzZLBWWRZVt0+C6NAMnMz82B/QDA8A3dfh2O5M33IfLu/CBeIBAeydrq0OEvR68XoN9jsF5QQ2vpuPXNRStEAh0VQ1bKQRKc4pCHoW8qmGhFmdBNrA9XvD6MAIhKsIhqioqqKkIEvH78BsG+mE3R7ZbDHYWj8ehOImbAoXAVaH2XCHLR8FAxaMrGChHDEvMWhbfvO2nPHrf7QSdHFlXpaJzEWsvuwIjnyafy5J2VGrbOpg9dz5evw9X1VnaGGE4Y+G3s0xkDxUCAQuVsEejMeDloOOnY+Hil23kxNZNm3jodz/DzqXwhiJce8OfMWduoQLk0NAQj//xd6TjUTTDy5pLr2HegoWMDA2x/dn1VDoT1OhpTEejzw6jV9QTDIZw8oVZx33hCLPmLjjuSdQA8vk8o6Oj9PX10du1l2TfXrJjvVjJMX7/7B3811UOs6aZ+M124F23KVx5vk5nk8WyTpemP2GCOChkr2/pgr2DXkbTVaSVNvw1S1gwfz7V1RXUVgcIBfzYjkbG0rBsHTQ/Pn8An9eD4fERDBj4X0SBvkNBVLs4+iCVc2maIdkpmQdHq6Wi8vQ6p0013NNDdTZLKp+nt7ubA93dXHRYlmgWeE7TaA4GafR6eU5VafN4Ct+7YlBTLwY09ROQPXo8JgOwxR+n+HgyiFlsNzlQmhyIQ00shSHXZJkOo6ZFxrLRFYVGn4FRPHH0WYDXR1rRaTOKcwyV9oAOvMj77OPmFDt1Cv922dvdw/5HHySwbxtryFBZPE2OZPM80j9CLjrOWtVk7jGCpHkXHs2p9FXUMXfhQi6c1TwZLBi1oMdWSBkars9D1mPQE0/xnkbriJrFtgvfH9CZP3s257XX4Jth2HzagaGcShYdr9egPuQjdBzRzkPB06xdGKJqohay7ZXCiB1D1whoKgFDw6uWZn/vTuRI5LMsqnbKrgGuC3smFAyvj85i4dEdUVj0J341JwOnjoqt6jiaFww/mjeA7g/jC4QKNfpnuCYc2PMwrbUjxGIj2JZFVWh4sg3VNwKJzKW4toqDTm1Yp2FKfcCJnELaaKap5RgZHqdYd9cewkaMqkB5cNRyoXfMQ1V9J5Wn8flRvLxM02R0oI9a26QvmcGfT/P0lheYO9pDz8GDGHu3cYXP4QcHhjkn2svKYwQgPzECX5/SqLZc6Legz4YxVyWpaORVHcXjwef1FIOnflr9HuoOC55+JQs3tZj89UN7+Hx7lrlThr3nbPhmr0amooE1HY285kU05D+1vps1deO8fa5Tdg1J5OGTGzx88lVzWNTo57ad8Ko2aDpsuH3ShL0TMJLzkNODeMMRGupq0TWdH23YwN9fBX4DklmLP8S3cve9Ln93Hsw57BgnMvDh39Xw3ps/AL4IjTWga4fazgqqqkzGFlTlUB+Kguu6fOFL3+T7t3QfdWK1zQfg4YMX8vH3X37Ecw9v1Vkyp5r6qtLGf9wS4JpLZp79dN+QRlVlmOqwxkRGxdErqao6Rr1AcTo48wOjd956K5fv38+3u7qo37uXjrExfjY4SHsuR5vj0KeqHPB4eHtjI3WRCFuAt8OMjeGUbbM/l6MvnSaWTpPPZtHzecLFIe+zgRk6gv4keaALOKgoDOk6MY+HbDCIWvH/s3fe4XGU596+p+3O9l1Jqy5ZxbIk23I32MYGDBjT0yChBFJIvvSenJOcc76clnKSk5yU76SShISQEEJCQodQDBhs495lWZIlq/eyu9o2uzPfHyNLWkuyDcHEJnNfly553nlnZnetfeed3/s8z8+L4vezuaWeX/nGJmqbTOW5uMA2Rw6Jkkq+uLCMP0TF8y5y9DeHGunt2MNnS6eLoyENbjui8pkb1nNZWYD2GBwZgw1nMMYY4w51cS1NPGX+JFK6+e9kikQqRVJLkdA0kkmNeFJD0zS0VIpUKk06lULXzXQC0inQdZ7tCfHzK1METiFUf/x5uLwE/HawSeMCrTTzj018YwrSf3oHfPfWU/c5PgQPtpkRUqk0dA5Cez/0jYqMRmXCcYVk2k7SUFEdDnweB8GAHacqIQgnG24ZE/q5MP4gYG4bE22M/zZ/JttPBABMHjO5wH/iXCd+iyJs2gcXLYAFp/BDau6Gh/fk8JmbZv7DeXiHk9zqG3B4chCN+ET0R7ZPIdsnIwoQiUN/SMLm8JJbUHFOrf7t2bWLx1at4l9SMy8wGMDbBIF1Nht5uk5WKkXOuOCZzxtXM0UHejBFz0FBICyKRGWZuKIQVxRSqorudGJ3Osl2OvE7nQxrGo8d3skvA/Fp9fDSBnx2VGFt9VwSeUW8u8xMuXk6BmM2J8OySrZDJa7YcHk8aC4fC4IBvA47TrsNx7iJykzMFtV5opyFKJh1fSXBrNdpF83anVPNNTRjspbg1BT1tAAGpqELglm/2PyDNmsjiZKMJCuIsvlbkmUEWUZUZHOfZEZYn/gbjMVi9Bw/Rp6UpjOSIFtO45WZqDUYSkGvYaf4VQqLbyTDw8OMjIwgyzL5+fln9fv1u999kY0bv8HnPwA35MJ1NUzUSD3YBd/dbOej18xhWYUbwzBoH9T4zydDXFgTQpVj5LiTLCg1KHmNqwXxpFmztLHHxkDMT1wswp1TS211ObLNiSA6UOxufB4noqySxoYhOvB43DhUBw7VHHfPxFwsFDPHSbucprWtm1g0js/npbQod2IcNgzoj6jkFpy74kU4FMLo72csGiXe20soHCYyMkIqmUQ0DAxAkiRq3W4CksQeUaTA7aZAOrMbbPoUP1NFzIkF5hM/nLjPnShrI0xGmY7/loVx8x1BOCMx9oQdhQ4MpFOEknGqFWPa//ewDr3IVLodtKQgcEL4y1gcn3iF0y+U0X3KTXni1+TD54nXMxmJOn4DFs3oPEQRQZAQZHMBqr29neNPPIT78E5WpCMExr9fPbEkL3T2kR4Z5iJZY85pPpC4DpuSIn3+PGpqa7mgOC8ju+SeMXhX2ewlcLQ0/GbQwYZ5efRpMorDQZnfdVrRM5SCfk0kKcg4VDt5LhuO1+gWF9dNg6m4LqKJEgkUBhNxVuXNXv9lz4BITYEHzRAZjHPWjJdOCKdJXSQ1i3A61N9MrqeeWHSQkdEE5QWTOb5N7SJzsy8GTKG8axT6R5MU59gQbG7CRoA5FfPO+UhLwzDo6ekgGh7GbUsgiToJTSahqwTzSixHaQsSiQTDfb3EI2GEaASnlmTrgYO4hvvYvm0bVycGONDZS+1gOytOU6bn0/3w3Vc5f9BmEE9TkkyTaONAPMrP5mtkzbLo9G/HZIJz5vKx6sz5nzF+75woUzZuzLylO0z9cAsfXzTzGJVIwwc3q3zzrVV8dy98rM68P53ITDDPDQbGZLaCYS7a/r+DBh9aD3Z50uv5O4+389GVYRbPUoYzFIMPPOLnHddUkNIS6KkEhp5AMJKIaIhoKFIKm5TGLqdRFZ2BkEFjJ3zxNME+H/pJLj/5xgemtY8l4aV6BxsvmFwQeXq/kw2nEEbTBjR2SxTmBoimbDidnnN6wdkigzMSRs/ZGqPd3d0Ee3vpjMVI9vZi9PSwrauLH6VSkxGbumny8J3jxynUNDqDQWTDYCCd5lg8Ts/YGOFolHQigS2ZxJ9OU2wYVAKvYzYxACGgGegURYbsdpJOJ6rXiz8ri4KcHCo9HubNUoPimvx8btu+mZulMG936sgCdKfg51GZfocPf3EFt88tNGvbAR2pyQmsPvEwfmLQm55mZUxKWeNpV8JE+tWJ7ckkm0yTDkOYoogLmecSTvTNSM06aeIuCJTOX0R9SuTmw/v5WEGMC7wwlobf9Io8Nurkk1ev5rIyc2B5dkhkTsDJ1oRpMNQShTKnmSY05TllItpCQECwgWBj4kFGAGzjPyf6iSeMjMb3n3hQmMi4EUyLo+reQb7+7AN884KxGf+v6ofAGwjQllVFzaIiavMcZppySuep4wYxyUWOQySuacQTaeoHUxQpSTRNI51Kkk4m0dMp9HQSI5WCdApDN2u+oJs19AQ9ZcYkGGlEQzeTpwwdCfNHRkcSdKTx6FlZ0OkLp4kkwH2KVcw/7oeGRB5P7JpD0OenNNfNRQvtGQ8hw1F4vhPetnb285xNpt5gzTqjBjflp/nBH44zv2RmJ3mAXz4r84V3z35zunpZlB8/9yI3vvVKgj6zpq1mwOBoikOtEvOKHbhVgXA8jS45zilRFODuL3+Zr84iioL593ynYUAiwfVn6TUMYgqe/cCoJBGRJKKyTMJmI2G3k3I6weXC5XbjdrkQVBXBbseuqgTsdiRZJi2KGJJEWpYxJIkxRUFRFC6oW8gNf7qftxPiLWoaUYBn4wJPanaWl5fS7gvy6TmmKBrRoQU7bynK5aDkYn6OjyZUFH8At9tNniKQNMwSThFDwAywnT2q0zE+DmjGlOgv44RgYoqcKURigHGyyCmKiLJkCpvjYqdNVhCVE9vj6eqi+JprRwI4HA7y51TQ09GG3SEyqmn0xc17oS6IuPxZlBed26k8gUCAwBsQhd3cXM+CBd8kEICf/h6eeBhu+xHYdQfJMZEL53r41vty8bvM6U/aEHjsqJP3biijNFeldSBCKB7luWNhogeHUYVRFKJkuZPUFhuU55/mBQCqDS6ohguqk0Af0EdS28OB49DYrTAQ9WPYiygoqaF2XjG64CCWlBjuNAVSRDey6sPtySYn24fL5UC1y2x+4UWefPyPpFIaNbVLuPXW29AEN4f27mJkoJ2q3Ah+e4rBVoU9uz1UVc1nQe3c8XHzb1IN6Yxxezz0j42BphGRJBa63ewH/KkUxYYxITiGgT2iiOZwoMkynTOJmKI4vuA2KWJO/bFhuoqfmAdNFUd1ps6dJj+1qdGfYI4TMxXoPjHnmKhBOv4aYNwwaUq7COZYMiZxOBHDTRqXYC7UjCCgygpVTju9Oih2leAs6uCJyM4TEasn3k9amFIzWJTMf0tmdD2ijCibhpHi+DglvYqxKjinnGVrTcGspbGRrX+4F9vOzSy3j/KuucVAMR3RBPd19sHoMBcrKYpmeOJQRbha1SHeTXRXN49tlRjKymfB/Fqq84LY7MI0UTSaTLG3a5iUbrAgz4cLGQ86Re4UEKZ/IExjUkayq5T4XQTU6Z+bVwavfMIqK8nQCHSkzNIrLodKnsuO7Qy1vhMZSyf+ghqjGtWniOAGqPTotA4mSNh8FFbW0p/WSMXD6IkoaHFEPYlCClU0M1tOdrs/U04s0k/agiVBD5s3yBgk+oGxFEkVJAni8cx5RjJhfghaKsWTL++hf6STnJwEbe0CvUNe8ouWUDyn8pwXRgVBoKCgBD2viLGxMXRdx2Wz4XA4Tn+wxd8FdrudvOISs55+YwOFdoVVdQtpGR5loSeLh3ZspyeqUN/dwwpVm/U8JxbdXy2KAHMUxheTTtyNNI4mY/zZyayiKMBnSlJ86tARXg6NZxQIk8UnTkRZisKJexD8pgN+cApLArsEq7Li7NxzgI/lgNBttp84Xpjp9/i//6MYhMbJdoD0CLOKogBeB8zzjrC+bDe5/tN9UiZ/2gKrTx3cCYBDjqJpaZSTopRcNkilJiPIIwlIC4pZM3mW8XZkTMDjy0NyZpPrcJzz457Fq+ecjRh9+sEHuWjXLh7s66O1vp7uHTv4QTI5a/87gZWiSI2uMwco5ZQeLK+JHuAY0KcoRFQV3eVC9fkIZGVREghQ5vGgShIJIIo574hipo0mBYGkKKIJApogmK6pokh6XCSIiSLP1O8j3tRg1tGy2agqLWZ5Xg7XFGbhlkXuH5MRCovxuV2oig2vIjNgiIiKQo5NQsScrEd08/yqzQaqA4fLPRnxMMVaeCJUf8YRYJYv+0xdZxxApjdGYzG+/62vYXQfQ5FErlo0l3cuLJy4/KGIQJPu5i1VZszuWBoeHZCZ47UTlpwE8/IxjPR4DmEaDN10HdfToKcxdLM9nU6OF2tLm06thmktIgGiYCAYJxxcT7SPV3Ibj1J8ZvcB9u1+nn+oC0+kDqR1eLhV4LetbubV1PL2pfksL5msb7l3QKQx6uTGxTkT7yeswbYe2HAWg3RSOqR0g+1HO3l5y+/40uUzf0diSXjrr7x8/s7r2HAKV+wH9oEnS8bvBknSkWUDVTawK+Cwmw/8Dhuob7D+8uLeEPVNfdy5MTOdLq3DL56RSUs5fPgG/ynP8ctNTm5719tRTsq5iKeguVtmfpmDlA6d4QBl5dVn4V28dt5fXc0vjh49ZZ8w8E3gP1/luccw7WZ6gGFRJDwueMZsNmLjizxprxebz4fb50Px+5E8HrxuN36nE7uqmg/ailm/U1AUJEXBbrPhstlwyjI2WTYdoUURVRSxzVC7zzAMfv2Xp3j4iUfQE3FcHg8VOQGuLMxmTbb5XTuagueSdi4uzeWA4CQvGCRpU8kN+KnyOWnFRpbDQY5sjoXTRc5JoyFDEEEQMUQBQxQRx6M5JUkGSUZUJCTJfC/iSeLBCQHhb0EsFiMSHgUD7A4HDofznBZE30h0Xeeee8p573vbJtoGBqC+vox167LYuhmeexh8SZGSAPTGRFrCCj5/kItKnRR7IZyAvV0Kfq+DsqIsDncbBGwjhEKdxMd6iY71YSOEzBgBZ5LqIp2q12hGmkrDoePQ0KXQH/WBvYjKymouWlaCbLczFIZQTKT+2DC/ve+PvG3lEDeuSWKTYXezyE+fC6I5l/CJ25ZQGjTvun7PZKTptkYVybeQnNwChkI6wdxCCgqLztm/F13X6evuZqStjdxIhADQn0rRGY+PO7KDKsvk2O1EVBXNbscvCNMEyglxcvz31AXSyTVbYVKoPPFvpsyLpjBTtcZX02e2ybOBWR4A0WAknsCvaxi6WffaM+40OKCDLimkVSduVQVJRBBlkM36wIJyou6sNC3S/G/B8ZZjHP79vcjbX2BpcoSc8Yl461icLR29yOERLlHS5J0mLCOsw7NJmaZgAVeuraWuOJt4Ks3XHt9BaLCfNc4oCrAjptIm+bnxuqt4a03+tOnsiAatcRldsVHsd5HrPP1noxswoMFgSiIlKvhdKvlO5YzrjO6JwNIzWEDZ3CNSsfACCotLZhWizdrgMRJjkbMinAIk0wa9tkGyPUM0tYRYVBWZ2LfviMr8whX88qGnufLiPuYUZf41H+8WeWpbFe+984vYLAMSizcJo6Oj9DUdpUw0SxYNJjQiqbSZvv3ZT/H9wQOzGof+aEymvaiKGjGFPTyMOxYmJ5WgSIYCCU5R8WNGfhiGy+dBtfvU/T51GL43/8zO+ZlW+M4Vp+7TGoI/H4NPLzmzc87GSAK+ewz+7YZT93v0IDjK4PIzvN7jO8xn9qtWnLrf+76n8vPvfAZxhhScx3bZuHaNmWm4rVEGZwXVZT4CzumRtHEN2kdclFfUIsvnbFyhxeyc3xGjyVgMB+bDclt3Nx87hSgK8DngSV3n0r/imingOGbK+4CiEHI6SbjdGIEASk4OWYEAPrcbhyyjiCK6JGFIEjFFodFup9FmA7sd0W5HcThQHA5sTieSqiK53bj8fjyBAE63WfNHUhSz+P+4AQD33oO24yVucaYy64ga8HxcosvpY2FxKTa3F7fHRUq2UZETREvrxGJRdF1HlETy7So+h52Ew0N+aek59RD0w9Vruf/H32VOpIM1qjn56onD5pCMbHdMiKKJNDw+IJNXXIqRX8qlay99Ve/DMAxS4xF2ryZSyzAMbkuluKCxke9+7yuMHjlAYmyU/rE02XPms/a2dRiJEIeTo4Q646R0geNRicocJzcu9mdMyrf1irhdDg6EzVqrhmEwGDewiUyIsVNjcMfjOkAwkKasxJ3oKwimiCuK477G40KuKAhUlRXzsy0Cd++B9yzOfE4cGoNPP+zjfz92Mw93xFgYSlEwQ9ZQ4wCkBTdXLTBvErs7IDsIpUFTgIxrBrGETn9cJx5Kk0zqJFNpUqk0qbSOrps/GGasjSiYkX+yaCDLOjbJwKaAKoNqB6fNFFvPJF304iVe/G6Z/35wgIArSa7PYCAkMBhRqCrPpqrkNDMGwC4l+eNTu7ls9Xxysyf7qzL4XSmGI2myPBKGPntk5t+KdHpm04CMPmQuZyQxa3h2Y6a1hySJiCwTVRTiDgea203a78eek4M/GMSbm4snEKDc7SbL5UKUZdOwZHycEyUJefwHQTAfxEURmyShCgKqJKEwnlZOZu29E1FMUUEgMkXIOBHdJY2LE9e/7e289e3vQBEEEokEW/fvYV9LE3sSCZIION0efIUB6j0eSnPzKPC6yXfYUESRxpSA7FBJqQ4GZLMQvCiKcCKaU5HNaM7xiM6ZUtbPBxwOhxXlMgu///0Xue22toy2Bx7w8JGPmAVEV6+DpG4jK6sQVYW1WTLZ2TL1h2HrUzlEMPA7JS5a5KQhJDPiUynyenGmi1iTtQBVgVDMYMuxKD39XYSNbnYOdLKpqRsbo4hGFL8jQVWBTnXxjAGFGcgSLK6AxRUaphXPAOn0Po7sgCOdMr0RH+FUHnsOt3HvJyOoU3SH5XN1fjK3lx88+gzf/0kDwfxSli0oJpq0kZ/tZMMqP6uq4vx+y15IdpHWJeo7D9Jw0IXTnc3SlRefc2UXRFEkr7AQbWyMtkQCXdPIlWVy3ZPj9TDQJcvk2u3E8/JwZGdP3t+n3ICFWf490/bUNmOGPsKU7TOdS0wIrqJ4ymPchkFbYwNzJIHBhEgspSOgM6oDgkiWqhCRVfLKyrHbX6295xvPnPIK5vzjlwFob23liT/8BumVTSxVh7m1eg4wh8ZwjGc6erGPjbLeliZ7BoHBI8Jb1RSE2xl5tJ37UzK/Top8pzrJvPLJfm8nyogW5aMPPIB4zUaKCvNZnOedKGHkV2CJYi6TjY1FOTAoE0ah2OeixGObMS5AFCDXBrk2Mw5XS8XpGxAZEVXiNjeKw4lHAllPougpHKKBU+RVGzS5ZZ1g7zY623ahufPwl8zDH8jO+Hux2UzDNrwzh6Amk0li8TgjY+Fx4TQGWmxCOLWLBupphFObJBCJQK4f0ifNf/S0zOMv7eSqS/soKZgu8c8p0Ll69VH+8JtvccnFlyFILiSbG5vDh8PhxG63n/F3xsLiXMHn8yFV19Lacgx3KoHfDl67wogg8bFvfY9PfPpj/NdIPcVTVBTDgN8Zbjqufhsf//w/IMRjqEYaVQCbnqZ3cIhdXV0MtB4j3NZCsqcTBvuwh4ZxxyMZ4unU56Ikpp/G6Xi9v2Wv1/kkwQziOR2aDu5XMYauqIKv3X9qYTSVhoGwDS1lYD+pVtdYAmRZwjCgvlNCsvnIKywjkpYJD4yQ40ngsJnlWgYjMrGUk7LyKksUfZNzzkaMbn7ySWo3b+bp/n5eePhhftzbe9pjPg189zR9xjBT3tsliT5VZdTrJZmdjVhcjK+igorSUkoCAfx2O16bDbskIWA+5Mcxo0ATgkBSEEjJMrrNBg4Hst+PMxDAk5WFw/HaUnENw+Ch39xL0ysvMycdI0/QCRkCRw0FMSePS69/C9V1i8zUMEkiMjKCFosgJZJEUylEQ0cXRFKCiDsrG38gcM4+8Le2tLD92ScZHR4iMjrCijwnC52m4/jhhJ2WlErFouUsXnkhbvfpRa83mlAoxLOPP0z2aD3rCqcH3TaOCrTFnVw+b3IyG03BjkQJl1x1mmWzV4lhGOzZs4WiorVsfwkeuw/yADkt0JMsRQrWcdtH/gXVJuL1f5eXnwF3HNYWg1+FgQhsbpVBUnnbhTnIonmDv38/XDAf3Cp4HGak6F//WiGRglgiTTxpEI/rxLU0mpYeF1nHBdZ0Gt3Q0XUDAx0JA0kCm6QTT2okkilyfBL5WTLhKDR1wdWnWTW8+1mFWzYW8cRulUvXLCbgmxSXNB2O9cjMK3HQOuShfO6Cv/7Nvo589Lrr+PfHHjulQdLdwFMuFwvz8iArCyU3l+y8PHKKivD7/WS73bhV1XQgF8drxokixniJDsZFwhOLNeK48CmJYkYNvqkmIhNpq1PSVGXBND6RAflEuuhJnIjmPCGe6ozX95ySgmqIIrpoRnQKokgknSYcGkVNaxTK4BPNaNBBHXp1kRyXStKfS+ncudaD2N8hzc31xGILWLhwcqry2GMCF19ch8djTmTb26G5eQ6XXjr53e/vh8HBXAIBJ9u3VJGM91NWYbBgsRNVNf+Odu3yEBpyY5OHcftEqmocOJ0inZ3Q36OQShp0dgwTGmhD1lowYm2MjXZiM0YQ9DG8aoLKfJ35JWa66qvhP34L79vAKeudfugHKv/1iVq++7DKp24uYWRM5rkDKu+5Lp+eIegJe1lZ40Y34FC7SDytEkllseLC9edkbb1wKES4s5PBwUH0ZBLnuOFcUhTxSBKK3Y6WnU3Jm+S7HovF6G8/Tp6uYRfMiEUBc2wcEGTUYB6BrNfoDnaO0Nnezv4/3Iu0dROLY4PkjX8P6kNRdnX24oyMcpldxz/L9+M7IVg/F5bMkqI+osGXBwv47s3r2R8RiMhuFhX48c5SfiCRhmMJmQHsuB0qCwP2MxY2Ezr0ahJRpx8prwx/cQWyopCIhNHGQvR1d1FqH8Fvg6aBGH3hJCIGOgJ5XjuV2SqRFPTHYJ5/ynlT0JdUSHkKCJRU438dSo+YEadxEqcRTg+NDLKwepADhwZZWpuYOH7XAT/7D7XyvhtHTnmdux/08+63XY8yHumcNswIq3gSkrqCjh1EB5LNg0314hg3hbJSUS3OdUKhEGMjIwC4/X48Xi+Dg4N8/0v/wMCOlymJhxgTRHqzi9j4gY/wjve8d+JYwzAIh8OMDfSTGgshp1LI42KpSuaCRTqdpmdwkO3tXdi7mumqP0LfgT1EQiPU+sa4vXj215g24OOH4P/Nn1IWxjip5N6U7X9qge9tNANDZuMnByGowpLgZImzjN8ztY1Pv07e/+3D8Os7Z09RB/jg72H1BQo2WcIww3/MclWShCxL2BQZmyJjt8k4VZnWfplHXuzi3981OmvWzs+ekjjQV8GGKy7j6tXZTEma5el9MjZnDrrgpCDXh6YUU7NgOYqikEgkGBjoJZmIIUkyWdl556QWYfGqOKPJ4jkrjIZCIV75yU+Y29fHl3/zG37d3X3aYz6NKYz2Y6a896oqEZ+PdDCIragIf0UFxRUVlOfl4Txp5T2JKZrGx0VPTRRJyTKG3Y7gcqEEArizsvD4fGa056t9unkVxONxtm9+kZ7OTjw+L6suvWzW2myaphGNREgmEkiShMvrPS+iCqZiGAbHW1vpbDqKIImUVc+nsOg15ia+gRiGwfaXnqe3aR/zbMP4lBSjmsiBIZl8r5215Z6Jm8BQHHZFc7how/VnJUrn5z9fxp137pnYfuQR6Oi4nfe976eoqlkl/Pnnv8qllx4GTDHg2Scg3O6gyG9ndbWHgGvyb3rzMYlgtpd5BQ6O9kFLTERVbaTicVxCEoEUOilschqHzUCVNVz2NB7nqeucvp5oOsQTOtG4zu+f7eNj1yRnjT4dGYO/7HfzzstyiGnwfH0OV1+6MKPPkU6ZgqCThFxKbl7BG/AOzpw9e/Zwz6pVfGeWyPkkcIeqUvmud/Hxa64hLQjExyOW9AmB0YyelETRNBEaX/WcqMM3Hrl5QtxUToidZ/gaT4icJyJG04ybmZyIDp1yHVkwxU5dECYiSvXx+qMoCoKqItpspCMRgqQQBBjV0oTiSWLxGEIyQVo3o2h9ikxKUYirHipqas7q2GxxbqLrOr/+dTnvec9ktGh/Pxw5Us66dea9M5GA3/0uj/e8Z/JemkzCjh0+LroowI4dZTgcOSxc2JVx7qYmO4qyhtzcg0wN1A2FIJFwEQyaK0YDAxCNZlFcvBRRFDEMg67OTloathLqeoXowAFGB1pRjGFIj+G2JSjPS7NwDrM6qgJ87Afwg4+d+v3f97xAUclc6qo8/PI5N5+5pZiWHjjc7efq1X6e3KNyzepJYW3bUQl/wM+IlsfKCy8+J78z4VCIkd5ejLExEskkgq5P1CfOLS4mkJPzphBFT5BMJhnq7yUdjSEYOoYAKHYCwVycLtdpjz+f6O7sZN8ffouw5RkWjQ1QIJvzqYOjY+zp7MMXC3GZXccz/hBrGPDhMPxk+anP+4VjDr7wrqvJdZtzntYYtKRU5uZlUeKZfWVX0810+z7Jia44qHJL5J/GXGUqUR16UwpxVxb2wkoCxWUc3r6Z6HA3C/0p8p2mIGAY0DUGh0dl3B4fy3JF7LN89+Mp6NNs6J5CsuZU450lYvSv5YRw2nDoJVbWtLDnUB9LayajRje97CelHWHD2vgpz/PsVjs1VVdTlOc/o+vGkuZPUpdJYwPRiSi7UVQPDqcHu93+qiKzNE2jq6OVaHgQQUhjICDJLgqLK3B7zpKzlcXfPalUisHBQVRVxec7/Xc0kUiQCIVIRyOk4jFSySR6SkMxdGwYOAXo1KF8fMj/6X1/4L1qFx/91ePcVT46q7D4QJ/My1XXsnzZUlS7HUmxYbPbURQbdpuCosjYFAVZVpAVhb0HDxJ54qt8pHpmP41kGj641c+33n8ZD7S5CJQtwB7rw6mN4tDj+OQkeU7w2KZ4dwim98jXX+ji/avDFHjNbUGAX7/YR77YxdXzZ5aSWgbhyy8Hedf188azDnUk0cAmG6iyjsNu4LKD2zH+o0JrL2w9rPPslkb+z5VjGfVGtRTc/bTEqJaN5C5n/eoK9rQ4uf2aPGQBdjYrDMRzWVhbRjztIS15qJg73yoH8ubm/E6l93q9SHPnQiSCWljIru5uTjUn2g+Eqqv5w/XXs3zOHJZnZ5spn+NEx38SgkCvIJCSJNKKgqGqiF4vaiCANyeHbJcLRVH+phNuVVW5eMOVZ9RXURR8b4ChxdlEEATKysspKy8/fedzCEEQuHDderRVa2k+epTO0BAuj59VXi8th/fx0nAIER1NsOHLL2XdumUTIuXrSXPzES6/fE9GW3d3Ftdc868T1+vp6aCm5vDE/mAQcgpV7FIeWTYzpTOmQcco7OyUkVU/GLm0tiSZu0BiY6WKKEI06qG9vRa/Pxev15uR0tvSsgO7r5u2UILoWJTkWIyxUQm7nEZPjmIXY6hyGqeq43GAS331tXamooigOEQ8DpENFwT448uD3HhRatrEIaHB71+Suely83viUMBIRYgnU6g2cwhMpk3j3b6wnbLKmZ3t/5aUlZRgXH89//XQQ3whlcoQK0eBz9hsyEuXctXGjRQEAkSAbkWhTFX/qkFew6yRfCIlPgVwktgpjUeMKoLp2u4aF1MTZEaEpsfLj+jj7vQ2hwObw2GWJpklsj1it9M/PIhXT+FTJCTRDrJEUrNhaCkQYFSUySkqpiT4Gi3ELc577r//H6el0D/0kIcPfGDy3vi733m4447Me+WLL6pcfnmAI0fsqGoZ1dWZdXw7OyVstkvw+/dmiKKxGITDDoqKbBPb0aiTgoJFExFQgiBQVFxMUfFNwE0AE2LpsYathDpfoXnoIPu2tyLpIxipCE4lTnlumoVlYFdMIcV+BkkfcwsNGvvjXLzUAyQIx3TK80WeOxAlmfJPi8paOCfNwfYxkowwOjxEVs65993xeL24PR7GxsZIxmIIkoTb4zlns2D+Wmw2G/lFZkFyTdP+KrO2c52CoiIKPvUF+NQX6Onu5qk/3of+0l9YlO7njgVuMwtmZIyDXT0EohGWKToFZ1A9ZK07xoHuES6vMgt8ljmgjDgjo10816UQ8PtYnOuetoCqiFDlTFFFCN0I0T4ksk32kVB9BG1QICUJnOLPzilCuU0DrReO9zLatIWRsMCGOUaGgZMgQJEbstUUT/eM0efPIk/QsM2wLqHKUConIdVKrKGVNs2O4Ssiu7T6dRX6TqTqq64coAX5pNciCgqCePq4mBOO1WeKw3YiC+lE/kgUs5wIJEJmrWctLZMyFAzJgSi7kO0eVIcXVVUzxoF4PE7jkT3MyYowZ8qadiI1xvHWUfzBKnLzz63Fbos3B7Isk5eXd8b97XY79mAQCKJpGvFIBD0SRk4lsAGRVIp4OEJcT6OKsOHitTzw1CPctnYJ/7TlFb46Jz5t/NoVlng650K+8W//DqJIGjMIQpRtZv3/EzXyZTuyYtajrr30ar7SeoxHOu7j+sJMcTSqwWe3u7jz2lU8MVrM6htvZukFqxmLRBjs7SRLSWInzeBIiGO9vQz2d5OKDOHQwqhaiIvnFfHfWxr57CqDivHHqfdemsv7fzQC0hhXzcuMHD3UDd98JYsf/eeluE9RA1pLGURiaYbGdA616fSNpNjd2seP/qGKe57o45fPDeO0pdEN0HQb71ifx5rFPv73cTtLKwT8rhh3PRqhoKSGkopFLCooQRRFSrJzzsqzucX5yTkbMQpmFMgLjzzCwL59/Plb3+LecHhWuffjwSDv/cY38Ljd2AUBQ5IYkSRUnw/Z58OZnY0vEMBut79pJ9YW5xaGYaDr+lmPxrn77st43/s2TWzv3AlNTVdy881PTbQ9//yXufTS5onttjbweIoJBGQ6O2HL8zKBLDt5BQqqy09Z2XuJREZQlE1MzR44dsxLRcVV017D8HAfqrovQzzo7FQpKLiIdDpFJLKHQMAcQjRNp7s7gZ4GLR5mZCCKDKTiI5AOoQgxVFsKp80UUN2OM6vddeBYjJf2DrFyboraEoO0AbuaJBq7ZW5YFyQ/a1IifOmIQvX8ZQT95gtuG4BIys+c8lpc51i6RCKRoLepidGBAZ584AGeve8+5kUi5Ok6xyWJLo+H8tWreftNN7E8GMQuSRwVRaqdTmwzPFgnyaz/mT5RW++EoDM1clQUTcFzBrOkcX/biejQE47zyDKC3Y7sdKI6HMjjzvOvFU3TCI+MkIrHAQNBlnG4PUiyWSPUWuH9+6ap6RDxeN20FPpLLlmE222OvZs2ySxdWo5/Sp7uli0Sy5eXkEhAQ8M6FixoZmow/+CgQDh8GS7XQYLByQJZmgYdHXbKy83Oug4dHTJ+/xK83le/SGkYBt1dXRxr2MpoxzYSQwcID7cjpYfRtQjP7Yrwy8+d+hyPvgKSu4KrV/t5YqdASekcFparPLFLwhUopCg/l8rCzFD+zUdsKI5s8koWUF5xbpnNWfx90tfby94/3kf6padZGOqhZDySdFPvKH/ubuH7C079GPJgD2z31PJf1y2dcb+mw66ITL/i56ICF1n20wvP3QnolrMY8+fjVhR82ii5YhL3KaZ1LTHAAeWnCCBrDNtQF27A5XAy2nEUW7SPXDV12rnOWAoGNRUCJWSXVL1u85XGxgNU5bzIkaZuasonP+fD9XPZvn8H733H6CmP//mD2VxxxW0oUgqJJDYpZRp2vs7hN1rajDSNaxJpQ0EXVfoHo9QWJ2eMvjUMaOhRmVO1wqrNbXHOomkayViMVCRMZCyCNjZCmWp+D/c1NLN9y2a8vY08u2Mvi5UIdWqSkbTAw4lc8i+8gs997Tu4/f5X7cXxqx9+hy2P/JpaoQOPEGffkEyXkcWqS65k7uKVXHzVW8jOzs54naMjwyTGwgAIooQvKydjHBocHKCrayN7tkJHPWTbIBwS6ZeOUVs3xMtPQKECWgIG414q5xby8dsX4XS8+sHihT2j9PX1cdPa9MR7mqgXbsD3H5G5Zm0xVSWm8PnzF/K546P/ZelAf5+c36n0U4lEInzzc58j+dvf8pVIJCMCKgV8w+ej9tZbKbniClaOr6QOCgLxuXMpKiv7W7xkC4s3hO7uToaHi5k/xYnw7rt9zJt3Nxdd9DYA2toa8Xj+jamBxS++6OTii3MBaGwUKCnJR1UFxsYgFLqG/PwyWlsfo7w8OnHMyIiAJG3E48msSadpGoODL5GfP5l+FQ6DIFyI2+2lp6ee/PzRKf0hErETCMjEYgCVOBzTywuk02mi0SgjI8MM9XcSGTqOFutHNMawiUnschpV0XHYdNwOsw7qcASe3zOGTYgjirCw0k1loX1aFOnT+21cuGI5XredSBya+lwsWLTynLxZdra2khUO0xOPY4tE6BoZIdLeztHOTrxOJzXl5SRcLkqcTuKyTEiWyXc4kKbUAUUUkccFzxNp8vIMYudUZhU+JQlBVZEdDuxO0xH9XPzcLN786LrOvfeWcccd7RNt/f3Q0FDO2rXmgNfWBgMDpSxbNjnGNDRAVlYxwaDMyy9XMn9+fGLhBiASgZ6eNTgcrRQVaVOuB83NCnPnuifGlM5OAVGcQ0FB1ev2vibF0m38+Dtf4n/vaMR/Cv3j4z+28+1P12K3iTyyXWRuRSm1c1Se2C3Rnyjh9qsKp42Bm4/YUNRs8krmU15Z87q9dguL14OB/n72PPg7tBefYv5IN5/aX8+fF8ZOWaPus/Xw6TJ4UCtg7aoLWJE3ewmCI1GJRiWXgMdNnVPDdwa3sIEkdEo+knlzUbwB1PAAjuggeYoZ3XWCzaOwpuTUGTGaDq8ky1m74RrAHMsGB/qIdDaOi6Tp04qkkSQM6g6EQCk5pVV/VZmmluYDlGW9SGtbF+VTKlltO7CE5saDbLioidzsmY/tH4bn963jpps/PNGWTqdJJBJEx8KkEiHSWgT0GBIJbGJqSsToX0coBsNhmJM7e59oErqjhVRWnVu14y0sZiIcCtF3/Bhe4gTHx6VYUmPrnv10dnTQ3N1HOJ6iduWF3PLu9+D6K0utGIZBc3MzY2NjlJaWzlq670x5+ukfsGHDL8bPDXv3QmHjXDan/8yNtyQxDBgdhe98u5yNl7ybyHAUhxxHTsVx2jT8zhQ5HjOr8Ex45KUhGlqGeMdFKcrzzGsePA5/3qZw1Zo8VtZOTp5eOqKSv+JLzJ079696jxbnJed3Kv1U3G43//g//8P95eV87J57yOvtpTCZpNtmoy83l3ffeCNZixfjH6+tGRIEegMB5hWfolKxhcWbgKee+jjvfe/kdn09ZGVVcuGF10+0tbb+jIsvnuzT1ARLl5ozXE2DVMo7YTLS2lrCggXltLfXU1w8KYoCDA+XUl4+3aijt/cQxcWTomg6DeFwCYWFXsLhEfz+zEiDoSGB3Fxz6InFfGRlzTyZlyQJj8eDx+OhpKQUWJ2xP5FIEAoNEwv1MRDuZfP+RhaWRkGSefvFs08UDAP6Qwp21U7LgI2E7mXBooXnrLinxWI4ALcsIzscLFFVOt1uAhUVAKh2O36bzazvabez2OWa0fDoZKZFjp4sfKoqdpcLu6K8qdM6Lc5f7r//C9x6a3tG29QU+kQCXnklh5tumhxj+vsBcgkGZfbudTJnTiJDFE0moaOjDru9PUMUBWhuFikvnxRFh4dB03zMmfP6TrIFQaCwqIjConcQLFzAV/5jA//97o4ZRaHn9gpUFPuwj+fsHm6XuWqdORdq7JJ45zU5044bS4IkimhpEdXx5qpfafHmICcYZMOHPgEf+gSDAwOoG1fx9OAxrsyZOUbjeAxsIpQ64NOObna/8gj/XbCODTUlLPFMt0SucaapoZveUdgdLyJZWEVucoTi1AjBWeqk59ggh1EY2EWoG47rLmKFVSQq5iNEhkn3teOKjwLp05YJUkSIDHbS09lOfpGZ0hnMzSeYm2+KpH09RLoaUWP95Kj6jCKp2wZuYhBrIHSggVbdiZg9h2DJ3FcfHamniCcNXFOmY5EYuHIcLA5eyv1/CXPzVb0ET9JMBkbgD8+U8d4PvCejXZIknE7nuFibmWpsGAbxeJzhWIRELEQ6aYqmopFAkTRUxUC1gXwGU47BMOT7T93HaQNtKHz6k1lYnAM4nE7c/gCx0AgNsSQBKY0iKMxfupySRRewRpbxuh3Ivty/WhQFc77xegqFuv7wlHNDe70dvxZj7cbkRJvDAVddcwurVy+krU2ltNRBT4+MKBbg8w0wNBSmtX+Iga5BxPQoJEMIqTAuOYlHTZDthcD4W79+bRZ183z88rEhPPY4BlBV4uLztwdwnOREr0hpUqkUFhazcV4IowAul4t3fOhDLFi6FFtPD/LQEEGPB3w+WiQJXVXRHQ7qbTZsWVlUzZ37qgp3W1icbwwPD7FgwcMZbdu2ucnNvW7ib7+p6QBLl3Zk9OnudjN3rpkHdvCgzJIl5t2lrU2isvJKEokEinKIqTphZ6dCcfGyaa9hdHSA7Oz+jLaeHhv5+VWk02ni8WamlsOKRMDrVU0znVERj+e1132y2+0Eg/kQNOuJ+YI1HDv4FJUlOkc6wtQUT38YAtjbKuMLVtIWyie/uAzPOV6Y/8TzkF+WaUulsKfTlHk8TP1gDaBdEMi12Sb6a5jiZ4bwOW7AhN2OMh7x6bTZLOHT4ryjqekQixZ9h6m3+cceE7n55oqJ7QcecHDbbZM1gxMJaGz0sWaNk74+AcPwUzxlnNB1OHq0FLs9Snl5ptlIS4vInDmeieslEhAOqxQWLj6r353qmhquuuN/+cjPPs0nr2hl/hyzfXTMNBfoG/Px1Q+bIV4tPZDlc6LIAl3DkJ8bID9reljW4eMSit2FXc0iZ3z8tLA4V8nOyWHppVfy6JO/RSDEhpPE0fowfP0Y/HBKQOAyj86S8Av8YZOfvVd9hBp9kCVKBPWkFPg8O+TRSay9kz0pH41LN9DlcaO3HiQ3MUiRfWYh1qtAHWMwuJdY315aUnYSwUocSy5HazhIPN01ca14yuBA1xi9oQSCAKIoUJPvwS+B/+jDNBx0Yy9fQUmlaR4oiiLB/EKC+YWkUimG+roZ627CkRgkR9VnFAy9NvAShbF6RvfV04MbOXsOwZLKM6qfl0rHiUR13FOF0SgUFnoRRQ8br30LTzz3UwDKSwADmjpycHqrec+d731VQqwgCDgcjvFjMusbG4ZBMpkkHI2ixUdIJSIY6SiiEUeWNFTZQLVPunmndTKcpi0szndkWcbh9mIzUhQIOn1jccJpHVEQCbhkPDaZIez4z8Fnl7a2FpYvH5jYTqehqS2LXSMN/PuUtZMXX5S57LI6wmHIybGN93Vis4Wx22UKCgIUFAToy59Hbq45fvX1KeTm1pBKpRgeHubIQA+RoeMkwp2kYn3k5TfxkatPLXq2Dfm4ssCqN2wxO+eVcugLBLjgyivp7emh7/hxenQdfzDI4qIi4vE4giCQ63afs5FfFhavJ4888jnuuGPyob61FSorS6mt/SgwbvTR9TOmLgQePiywYoUZLTo8DPn5fgTBfMiHdaiqyrFjm6momDxvMgmiuGTa90rTNKLRA0w1YjSFzyVIkkR//3GysjIjrqJRmdxcEU0DQSh4Xb+rBUUlxJOXcHjP83TFUozGYiyr0FHGH04SKdjVLNMZLuDGW9953giBaUFAAxSgVFXpjMcRdR2/YSBhWhaMiCIoCqqq0mcJnxZvcnRdZ8uWq7jjjknRoq8P/P45E3VFn3tO4i1vKc6IlnzpJZXLLgugaXDokJ/16zPPW18fwG73UVHRk9He2SmQl+fBNsVJpbdXxuOpfUNq3F5x1VtYdsE67v7JN/mX399DliNMlkfm3Vfls6jKVDLq2+CBrQ6+eHsevaPwm80ePnZzpqGhYUB9p0hEs2OzeZk7p9KaL1mcF1x7+/9hV/8R2tob+ODRYUqUFIpo0JaQKc7ysHKOwP5IH2v8k8eIArzTM8Lgpq/zR+8Kkh/+N9j3AvOTneSc9LV1SLBGGkU/9AcOxhQic1dTdMOt1LcdI350N4GxHkrt+jTjkxPHzpcSEDpM8sXDxBMyO1AoynMgSyI7jo9wQTDFStNbi3gadvZqDKZsKHkBqp0RtO7naW3egl5Qx5z5yybGFVmWyS0sgcISNE1joLebWHcjLm2IbNWYMTLVZwcfEYgcYnjvIbrxIAfLyS0ux26fORw2EunBlk4TnKK1xGIgGzb8fpnDB7p51zUGT74wwvMvjRGNwYq1V3Ltde96XY1LBEEwDWrsdmB6Sq+macSiUYZjo6STYVKMMBqLZrzuaccYYJxfj7sWf+d4AwFCwHBkFJ8LckVz4XbMkE3D0dz8c/LefeDAz7j22sntnTsFPvE5Hw88kBmg09VViSSJDA6KlJWZc7Z02oXHE5noo2ngnGLGJIp+wBwTg8EgwWAQqJvY33/fXfSHnic4PbERgLgGUaEAn+8UxZ8t/u45L2qMWlhYZDI2Nsb27QHWr58UHu++20FOzg1cf/3vAKivf4Wysu9nGCK9/LKXiy7KAmDHDpWVK81/HzqUw4IF72J4eABFee4kwyUPFRVXT3sNnZ0HKCqaFBB0Hbq7CykqWkA8HkPT9mVEi/b3g9/vQlFgYMBOTs681+OjmMbw0CA7tz1LLNRHKDyKS9VRZAEtZcORVc4ll113XhXhHx4aItXZmRFXkTAMRtNpdMNAFQRCikKwsvK8el8WFq+V3/72s7zznZnRoj//uZc77zRXgY4fh2i0lNrayfCnl1+WWbGiGLsdtm61c+GF2Uw1a29sVBGERcyZ05IRLT8wICCKbrKmmLd1d4Oul1BU9MbX5kyn0zz84G84tOspstVBEvEoHQMCudkuVi7K51ifB7u7gHVrL6SppQObMEbAbRBLCPSOSEg2J4HsQirn1ZoR9xYW5wkP/eYeBp66h3e6hkim0qQNg4Bd5pWIwgP9Mh/ODrGloYXrPWPkzqD/7QgJHF7/cS7/4Oc49uT9FPQcoMoxc2YJQFtcoCUwj/Jrb6OguJTWIwcJH96JZ6SDMvvpjZKGk/BsGN42d+Z6o21haI67WD8380G9Y0wi4qukpG71rOZKmqYx0N1BvLcJtzZC0HH6R7ShhMAoHmx5leQWl00IK8PD/fR0PIWodVNdOjLRv/6YhL/kegoKVH72w7voOr6d6y7VWDoemXugQeLhFwq49MqPs/biDae9/tlA0zSaDm+ntjA6a5/uEQnZv5Bg8BSFSC0szkHMhYAIyUQCUZBwejznrIO6ruts3nwxl1wSm2h75BEXa9bk0t//R2pqTvSDp5/+CBs3XjqRRq9p0NWVz5w5YxPHDgxAdrYLQRhfpJFrTikGRyIRfn3XV7htVTvekx6F4hr8+qU83nLrP5KblzfzCSze7Lx5zJcsLCwyue++z3HLLf8zsd3XB8ePz0OWf8rSpZdgGAZbtnyciy4ameizd6/A/PlzsNmgpUUgLy8Pp1Okp0fE7X43Lpd7muHS6KiAIFyJ15s5cQ+FhpDlXRkuzt3dNnJy1qAoCj09B8jPn7zBJRKQSNjxemWiURDFuajq2RPxEokEbS2NhEd6EDDQkcjKLaG4pOycXGU9FYZh0NrQQI6mMVNQRD8Qd7spKS+fYa+FxZuLpqZDJBJ1LJjiUP3YYyKXXlqHyyURj8Mzz2Rz3XWTSwlHjgjk5BSRkyPT1ibgdueSlTWZU9veLpFMrqGw8EjGQlIoBCMjLkpLbRltQ0Ne5sy54G8ahW0YBpFIBMMwUBSFrq4uszZpYSGaphEODWLoZlqqIcgkkxpOpxO/34/H47EiyC3OS44eOcJjv76LVG8bIjoJu5eVV72V9VdfS+OBvTT98us4j++jv72Vm3Kn1/rUDfjNgIPCf/4VqzZcw74nH8R28HkWq/FZhc5RDfaLQXyXvJ2FF65F13XaW5oYPvAKzoFWypTktBR9gE1DsKQEArPULAV4rE3m8tog6gz58QNxgX6lgLyFa8nKCc5wtImmafR1tpHsbcajj5Kjnv5xbSAuEBZ9KLnliPYOwsMdJMOd1M2drMW557BCIr2YkdgIB7f/lM+9PzmtXrFhwE8fyGHVZV9h8dKVp73u2aC7sw0tfIzSbG3avlAMOkezqV6wBFG0cu4tLM4We/e+RE3Npzih24bD0Nk5h/r6Y7ztbfsm+r3yisCiRfeQSNiw2304HCLDw5BK+QkG0xP9+vqkiTT64WGBQGDhaV9DKBTiz/f/BIfezsLCQSQRjvT4GUjkc83bP0h+vrUY/HeMJYxaWLwZSSaTPPOMn2uumVyV+9Wv7BQXX8hllz2PIAjs37+JmpqfcSLLU9dhxw4/F17oJ5WC+noPdXUeNA1aWy+gqmolnZ1HyM3dnxEt1dJSSnn5qozra5rGwMDLFBRMTkLHxiCdXoHXG2BkpB+XqznjPD09Evn55g1uaMhPVlbJ6//BvInRNI3u1lZIJvHrOhJm/dCQKCI7neSXliJJMzyZWVi8iUin0/zmN2XcccdkWlZfHzQ1lbNmjZl2ed99KjffXDbxAN/fD8PDucyb5yQeN2uM1tVNGhYMDAiMjq4jGDyC1zs5zYnFoLXVSW3tpKphRjXYycu74JyN2rCw+Hun4cBe6u/6KqN7N1Ob7uWCGTIn+5Pwy3gRb/nZM1RWVXFgy4tEXvozixnAM0vWtabD3oSKVnc5S696Gw6HwyxZ1N5G376t2HqamCPHGK/mwSNDcP1pPE1awtCkBblkjoJtFt0uokF7OoC3ejWFJWWnXNRIJpP0dx4n2duMzwiTdQYiaX8M2tNhRLGHJdWTC+N7DqksLazmP372O770oePMtqacTsM371nCl77889Ne62zR093BYF87Wc4YLnuaVBr6IyqiLUBZRfV5tyBuYXG+8cgjd3L99Xsntp95RuLyy6u4995Huf320ET7PfcUc8cd36alRaS83Bycu7oUgkF1YozRNIjHVTweczAdGFDJyak649cyPDxMY8NhdD1NWcU8SxC1gDeTK72FhcUkjz76Ld761klRNBSCefOKCYffhiAIpNNpotH7mFr6btcukWXL/IBpuLRokRl72NTkobp6OYlEAkk6eJLhkkxx8fJp1+/rOzrNrXlkJJ+iogCappFOt2acJxSCwHjIxPCwiMdj3aBeLYqiUFpVRSwWY6i/Hz2dRrbZKAgG35AahxYW5wL33/95brsts1bVI494ufNOUxTdtEnk+utLJkTRRAKamnysXm2Gtu/da2PVqklRNBKB4eEL8fsbMkRRTYOmJid1dZmhXt3dMh7PPEsUtbA4h6muW0L19x/g6MH9bPv+/2X37md5h3+M4JRbZdAGX7B1su39tfw+eyUf+vmjBNetp7XxKLuf/C2VI00UnyQqKiKsdMSh6TGOfvNJegoXUXP9bRSVzqGo1HRF6+/toWnvVsSOBuD0TugeBZz5C+ifU0GocRsl8gjuk57M3ArUKsMkjj1O02En8pylFM9dMKPYZ7PZKCqvgvIqEokE7R0tpPpb8BOeNXI16IDjIR2BdOYOXWY0EsPnHmTPwQi/+VMPAqazdDIlc93lQa6+zI8kCeR4Ounv7x+v+/fGk19QTG5eIUODg4zGIsh2G+VF1vzIwuKNIB6PU1x8IKNN0zzEYimqqkIZ7R7POgBkeXJASiSkjOfG0VHIzp4M9pCkV1cXNBAIcMGqi17VMRYWYAmjFhbnFel0GvhGRm28hx9WWLYswMKFdwKwe/cTrFgxmcauaSBJfhTFFClzcvyIIgwNCeTnX4MoinR27sgwXNI0EMXF0ybeodAwPl9XRlt3t0xurlk8Zni4ldzcdMZ5EgkFr1dA00CWC62V+78Ch8NBUWnp3/plWFi84Rw9up8lS77H1MDoRx4RuXncYOj4cSgqKp4wX4JJsyXzeIFFi7Im9iWT0N5eh9fbRjCY6Uzf1OSkqipTRejpAUEIkpVlLexYWJwPzFu4iHk/fYjmI4e5918/SkHTS7wzN51hoLTKDytTO7jvqkKGlr+FW7/2Yy75xL8xPDzM5kd/h//YNuqc052O5znTzBvZQ//P9/CiWkLehncxr24Jwbx8ghvfBkDz3d8Hek/5GofjEG7YQqq4mNoNtzHQ30f7wZfJS3WRddL6i12CKleUdP/LtLVuJ5lby5wFK2ddqLHb7ZRU1kBlDfF4nPb2ZlKDx8kigm/K8KbpYAiAcFK9VUNmaDTKwfpG9HgfX/9sGud4qZFUCv741Bif/Xcv3/5yBQU5UQYGBv5mwiiAKIrkBIOc7HRvYWFxdtmx48+sWzf57NfZCcuWZbN5cxsbppQfPnIE1q27jOFhyJ2pEPQ4qZQ0scCdTIKqnsJdzcLidcQquGJhcR7x1FN3cf31k6tv8TgUFBTS1LQUj8eDpmlI0p8yTEl27pRYssS06WtosFNcbK6g9/XVEgjkMDw8QG5uptjZ0eEhP78ioy2VShGJ7M8wZopGwelchKIoRKMR3O7BjGOGhwWys83rjY6qeDzTXUYtLCwsTkU6nWbbtquZP38ygqu3F7KzyybqijY0ZDNvXqbZ0rp1+QiCWetKUQI4neaUR9ehoWEOqjoyLfq9uVklGLQzVWuIRCAWc1NYWHt236iFhcXrTmXNfD5z//Ms//Vevp6sZddo5n5JgHfnp3nnsQe576oK7v2HD5JKJll3+0eo/tJd7Kh7F1vjHuLp6ecO2uBivZ3Sx7/Ftq98hB1/eQRNM8eUYFk1fbHpx0zlyDBcXpgk++C97PjTj7HZVWrXvw3b6juol+bSOTa9RI4kQLlbozq6n+EX7qb+5ScIh0IznH0SVVUpqVpA+aprsC2+nkN6Dq1xkVDSTNVXJANJzIyQlQWFHXsPsHheH59536QoCiDL8K5rDW7aOMp3f9bJwIgdv99/6jdrYWHxpiQUuj9je+9ehbw8hZ6epoxAnt27s8nJ8TI8LGG3m8pnIkFGzfeT3ejjcawsHYs3DEsYtbA4TzAMg9HRf81IN3j4YYnly7OoqfkEALt2/Ylly+IT++NxcLsDiCK0tUFNjSlMNjaqVFauxTAMRka2ZYidoRBkZ6+eVseqt7eR/PxkRtvQUC4+X/a4EUhjhhlTLAZOpx1RNGuQejxWXVELC4tXz+9+91luuy1z8ebRR72sWeMH4JFHVDZsyDRbqq7OnygncuSISnn55MS6vj4LVZUpL49PPSWtrQqy7CQnZ7JN02BgwEZ+/mKrjq+FxXlM1fyF/POzh9G/+QLfGsxhMHM6Q74dPpEXoeKln/HgTUv40//9CMODg6y86gZW/cuPOH7N53lRKKY/Of3cDglWq2FW7vsdR772ATbf+yPm1i7mxVAuiVmM7w8OQa7TTNF3K7BSaWf0iW+x78UnUFUHtWs2Erzs/TS6l3IsYiM1Q7nQAqdOrX6M1Cu/pn7TH+jv7T7t56BpMcpr05St9iHX+eix2xBFkOXMF6qINp575Vk+eusMivA4a5bB0WOjtPXlU1BQcNprW1hYvLkYGOinrq4to83p9JNO6xQWDmW0i+IFANjtmYaWHs+kHBUOM1FbFCCVUi2zSIs3DEsYtbA4T3jhhT/wlrf0TWynUuB05rN1a5B58+qIx+O4XI9nHLNzp8zChW50HYaH3Xg8IuEw+HxXjjsZH6W4OJpxzOBgKV6vP6MtEgnh9XZkrPz19Mjk5c0HYHi4i0AgkXFMKCRNpLUmElnY7daKn4WFxavj6NH9LFv2/zJS6B9+eDKFftMmkauvLskwWxLFXHJyzLD5AwckliyZTKFvbHQiy4VUVGRGWHV3i6TTOZSWGtPaXa65OBxOLCwszn9WXnQxn3+ln5fe/WPu659eg3KNH+509hB7/Gfs+PDFPPR/P0xPVyfVi5Zy8ee/gf7+b/GifwmN0ZkXSuqcKdZ1v4R21+cJhPq5r9XD3mE72rju2DMGdx1I81xTmFQ0wpg2OeaUuNLUjb7E4Qe+SVtzAzabjaqla5hz5ftpz7uYhjHnjJGrARVq5V5chx/kyF9+TfuxRmYy19U0jbGxfROL2E6nSFGlE10wsCuZwmgqYeD3DnA6M/cLF2nY7QWMDA/PeE0LC4s3L7t2/ZKpFb4OHIALLwywfXsP69ZNjik9PXDBBRvp789Mo4/HxYwxJhabTKMHEARr7mXxxmEJoxYW5wnt7V/IiMh89FGRq6/ORVVvA2Dnzvuoq8t0ig8GsxEEOHRIYsECM52+ra2M3NwSkskkonjgtIZL6XSa0dG9eKaUeInFwG5fiKIoaFoSQejIOM/wMGRlTTVcyn2dPgULC4u/F9LpNK+8cjW1tZMP2z09EAyW43JJtLZCcXHJxAJMPG6aLc2bZ+Z8DgxATk5gYmxqa5PR9VoqKnozhNbBQYFUqoTCwnhGe38/GEY2wWDR2X6rFhYWbzBvee+HuHFLhJ9Uv4fdJ2WiyyLcmpdiebiJgb/8hv5/vIaH//n/0NneRl5BARd/8AsUfeHHbJl7DTui6oToOZUS1eDyVAtvHzvASGsv97d6+XG9nT8eHGGF2sNNBYNk6wP8YWcnD+4bJDV+DlGARZ4xAvvvYcef7iIcDiFJEuXVdVRf9T6G515PfTyb0AyRq04Zahwh8tv/QtNTv6D5wM6J1H6Avr4jFBRk1kwdGVEwDD0jVT6eBMEwcKjT66ueTMALK+epqOGn6Tj8Z1qOvMxAfy+6PkuorIWFxZsGUXwyY/vIERWnU6Sx8WhGSaKXXnJRUVHAyIiCokwqn4IwKUVpGqiqkrFts7064yULi78GSxi1sDgP2LHjWa677nhGWyqVy+7dCmvWvIuxsTFycp7P2L9rl0x1tWM8jd2PLENLi8LcuVcA0NGxg4KC0xsu9fU1kZeXGQ06MJBDIGCmrg4ONhMIZDo6gx1FsQyXLCwsXjv33fcZbr01M4X+sce8rF7tIx6HxsYcqqomn+Zfflll1SqzXEg6De3tLgoKzIiw/n6RWGwZpaVtGYs4oRDE46WoagjHFGEgGoVIxElh4YKz9wYtLCz+piiKwoe+80vy7jvOj8U6hjNLDlOgwp3ZEULNB9BeeZTUf7yVh//pTtqPt+B0OlnztttY9i8/pX7d/2FzOofQDDqiV4ZL1RHyuvZTnWzgY1UjLM3WKHBBTQDeU51ikTfCPTv6mBpw6VFgpdLK8GPfYv9Lfxk334SC4lJqN9xMeunN1Bsl9Menp5kqIlS54lSOvEL3sz/nyPZN9Pf34Pf3ZPTr7IRkcgSDNK4pC++RKBTn+mnrPn35kENNXuaW56PKUBLQKPd24ou/QE/9g7Qc3kRPd1uGOGthYfHmoLHxMBdcMDKxrWlQVmaWV/N6+zL6xuOLMddKMqP07fZJU4xwGAKByTEnkQCbbXaTJguL1xtLGLWwOA84dOgTBKb4Fj31lMD11+fT07MWu93Orl2/pKZmckY+OgolJWahvMOHbZSV2YnHQZYvwW63Mzo6RDDYmXGNmQyXIpEwLldbhplTX59Mfv5CAMLhYfz+TCeDoSERv988YGTEZhkuWVhYvGoaGvaxYsX/Tkuhv+UWc4x67DGVK66YLAb60kuTZksA+/bJLFpkRhqEQjA4uJyCgtYM8TMeh56eIjQtylQz5XQaensVgsFF1qKOhcXfAUUlpXz40f0c+OQD/DE03QF5bQBukLvZvPsgc469hPi1G3n4H9/L8WNNSJLEojWXsO6L32PkXf/GC2o17SeJlbE09BiwfpZS63N9BuUenaeOg35SNnqpO82C4Rc4+Ptv0t7SONEeyMqm9uIbcF30Xo4oNbTNYNQEUOpKU5M4jLHnj7Tt7mBk2Aw1NRd/YpSXaySTaVxTxsaxGIym7AhKkO6+GU8LmEJIR28+pUU5Ge2KBIUBnXJ/Pzn6Noab/0zLoafpbGskmZwh1NXCwuK848iRn+GbEtC5bZvAsmUeDh8e5pJLJp9JIxGYP/8qBgYESkomhdFoFNzuyQfMWEzKSKvXNMWag1m8oVjCqIXFOc6hQ7vYuLE+o21wMIfhYZElSz7B6OgIJSXbMvbv3WujvFyluxuqqkxhsrk5j5KSagzDYGhoa0ZqvGm4tCqjwLWu64yO7sXrnewXj4OizEdRFFKpFPH4sWnuzV6vHUE48e+y1+1zsLCw+PsgnU6zffvV1NRkptDn5pbjdIps2iRy1VWTdUXr6wVqayfNljo7obw8G0kyIw7a2xeSnd2G15sZ2d7dHURVJYqKMsO8uroEHI4y3O7pAomFhcWbl4uvv5Hrnxvg3iUfZn8kU9xURHh3nkZ231Ge3NvIxcO7sX3jXTz8D3fQ0ngUgNKKKi75xJfxfPz/sblwHfvHZHQDto7C2uJTX3tNME6f4OeA9yI6o5mPZ5IAiz0RfHt/yY6HfkYkEpnY53Q6qVl1OQWX30mj7wKaIrYZU/tzHVBLFHFXK/XPHGf/nlHKy+O0tSTo7EgiTXm70bhI3FfC7e9azBe/7SEcmX6+VAo+840Crr/xs3QOS2izeDTJAuR6DcoDwxTJe4gcf4iWg0/Q3nKIWCx26g/FwsLinCSVSpGdvTWjraXFgyTB3r1HM4J5XnjBxtKl8xgZcU17ZnQ4zIHHzFrMFEENw6ovavHGYgmjFhbnONu3f5SpZp+bN8P11xeyc2cpJSVl7NnzM8rLJ2fBAwMwd665et/T48Lvl+jqkigvvxqArq5GiovHMq4xOFiC15sZ2dnb20xubqZrc39/FoFAHgDDwx1kZWWmR0WjMg6HSDoNsZgfu91KgbCwsHh13Hffp7j11kx35cce87FqlY+WFigpKcHlMqOj+vtBlnPJzjajDpJJGBnxEghIpNNw9GgZfv8QwWCmUtDS4sHhyCIrK5yRWj80BKlUFvn5ZWf1PVpYWJyb2Gw23v21HxG4p5lf2BYzelIWeLEKd2aH2bf/INuO9XBd7CDOb93Cw5+/jeYj5iK2PxBg3W0fpvaff8aupTdzMC5Tepp1FrsEQjLC4kuuwbPxc+zQShg76dpeBVZKLQw++t8c2PLMRHo9mGUBqhatpGLjnXQXX86RqIfYTKn9dqi1J1ic7OWFPw+QaA1TnZupamoJgX07DrBsocJX/ukybv8CfPvn0HAMmo/Dj+8T+NBXlvDej/2Ba976QQpq30ZIvZSWUDHtw8qM1z1BlsugPCtMif0QWtcjtB54lLbGPYTDodkPAiKRCH19fQxbJk8WFn9z9uzZxMqVk9Hfw8NQUWEaXcpyZkbiwEA16bTA6KjEkSNw9KiZ2ahpkzJUJJLpRm+ex1qctnhjkU/fxcLC4m9FS0sjl1yy/aS2AKtWSeTkfID+/j6qqvZk7D940M6ll9o4dEhk4UIfmgax2AUUFrpmNFzq6pIpLl6RcY5oNILT2ZrRr79fIj+/DoBYLIaq9kwzKgkETCF0dBQCgQIsLCwsXg1HjuxlxYofZowtDz0kcsst5cRi0NycwxVXmDmf8TgcPernoosmc0D37bOxYoUbgMOHs3G70xQVZaoLDQ12srIKSKf7cLsn2+NxGB11UFxcd/beoIWFxXlBSVk57//zXjY9eB+j//Mh3uoNZ+y/JMsgqXdx75Z+ls4r5wb7Efq/824eds+j9s5/omp+HYqisHLD9Rzr6CCpv4TjNOEo8YQ5Vnl9fla+7cO0Nh7m2I4HqfNmRlbOcadIDW7iwO93Elx9E0VllRP7RFGktLIGKmvo6eqgcf9fKJFjBE5ap+4cg7Isg6pc2NuTuXCkpwTyba14nOCwOfj8ByDbB89uNUuNNPZews9+/dxElpEoimQHc8kOmkabo6PD9PY1ISa6yXLFcc+yRu51gNcRBRqJDjbSdtxOWsnDn1uF35+FIAj09/fR2nwQtxzBbU8STkk0xZ3k5M6hvLLm1B+ohYXFWaGn51cZz4hbtypcc41KZ+cYq1ZN+lKkUjBnzgb6+wUWLRKx209k7MDQkEFuroGiCMTjcsZ8LBoFh2NKg4XFG4AVMWphcQ7z/PMfpWJK2c89e+Daa4vZtk1l5cqrOHToJxRNMUzu7oYFC4LEYqCqXhQFmpr8VFQsBaCzcycFBZORAWY9/LqMGi5mqv2+jLoxiQQYRhV9fT00N9dz/Ph+pmTdk0hAMmmnr4/xWqbFyLK17mJhYXHmpNNpdu68JiOFvrsb8vPNFPrHH1e5/PLJWnabNqmsWeOf2G5uFqitzUIQoKHBid3up7w8M+r9+HGZ8vI5RKPD5OdnXr+nRyY7e6FV08rCwmKC9W+/hauf7efXdR/g0Fhmer1NhDvyNHw9R/nF9iZsRoobtKMEvv9eHv70Ozl6YB8Ayy66jG2Dp04L7YiAJ3Kc3c8/MdFWVjWfmpv+kb3u1dPS62UBlnjCePb8gh0P383Y2NjJpyRthFh4ZQnSBeXU46InOrmvPQpzx2srG0JmxKiRFkEeAaDxWIi6eVA7Fz56G1y7Hq689j0ZpZdOxucLUFa1ktKFNyDkXktbrIaWQRfD01/iBE4blGYlKPe04Qw/S9fhP7N/x9N0Nm1lWckAtYVxSrJ1KvM0Vs4ZRY7Vc/jA7tlPaGFhcVYYGxujsvJIRlt3t5l1uGVLI3PmTLa//LLIRRctJx6XOZFEqChQWgpVVQZNTXE0DQzDliG0JhKiNRezeMOxhFELi3OU3t4eVqx4NqNt3z4v2dkK4fBV9PV1sWBB5o3p6FEHwaDMoUMKlZVOBgYECguvQRAERkeHyc7uyOjf0eGhoGDuSdc9Rl5e9KR+KvH4AIFAFxUVo1RUGITDcOyYmbo6PCxRVCQTCJhCxslp+RYWFhan47e//SS33JKZQv/EEz4uvNDHpk0iV189WVd00yaZyy+fNFsaG4OhIR9ut0hLi0Q8XkxlZWZqZleXQCiUR3NzmMLCzFzPzk4BTfPj9frP1tuzsLA4T7Hb7dz+jbtw/aKBX0gLCZ+UKl7qgPdnhdi9/wAPN/SSrRjcoDcT/OH7eeRTN6KNhWk0CtnVGePbz3Xw7Wda+fYzrXz3+Q4a++MYBjx5HK4tg+rme3nul/894eSuKApLLr0O94bPsiNRSHSm9Hqxib6Hv8nBbZvQTetnwuFRfL5ORBG8XoW5qwoJVwRpUB00R8CuMLnALZ1UlFQXsTlMFXPvwW58UzJaj7YILFl6+Rl/di6Xi9LKRZTXXYuz9C10aItoGfbRHxamGU1NfN4y5Pk1EtFhFpcmMuqfnqAkS0NMtjM8PHzGr8XCwuKvZ/v2+5k/f/LL29ICpaXmc18i0ZbR9/jxOYCMyzU9bNzlApcrRV+fjqpmfskNwzGtv4XF2cYSRi0szlGefPIT1NVN3niOHoUrrijh2DFYteqjNDT8JMNJua0NFi3Koa8PysuzSKdhcLAOny8wHgW6JcNIaSbDpVgsit1+7KQUegGfT6G0NIHTaU6kbTYoKIDCQvOG6PebNzynE+x2ZoxcsLCwsJiNI0f2cMEFP5oxhb6lBYqLS3A6zZ2HDgkMD+cz9Xn48GGVRMJJczPIshdZHmb/fnPhBszay5GIh6ysKIIQp7nZTNUCGBkBXXdjt9smxAgLCwuLkymrrOL9jxxg+wfu4eHQ9DTP9VkGG4VO7tlykEMDYwQUuN5ooeAnH+L4tk3sb+rko9URPlcX53N1ce6sjLD5cDv//HQ/FxWAxwYuBS4T9/LKDz9Nf1/PxLl9gQAr3/Exemtv5lBInXbtck+K6r5n2Hf/N+lsayEU2juRmppOQ2trmKoqqF7ppvDSbAx58hFQOEkYTWsCuTnmWNg35TUAdPXbKJyaqvQqsNvtFM+poXzBRvwVb6WXlbQM59A9KqKdJJJ2D0FRDpwiMJXyYILjxw6/ptdiYWHx2ojH/5ixffCgi/nzBUZHk9TVZTq1ZWWtp79fIDt75ujPggIYGtI4OclQkqz6ohZvPJYwamFxDjI6OkJ19Z8y2l5+2UVxsZ1Dh2qJRIZYvLglY39rq4tAQKKjw0l2tkRTk5PKytUAdHU1zWC4VJwR2WkYBgMDezOcBM1oUBc5OcyIqkIwCJHIZBpWVhYMDvbMfICFhYXFSaRSKXbuvIbq6swU+oKCckCkuTmHqiozeqCvD2y2XK6+Wmb/fjhwAA4dElm0KMDy5dDaqlBSIrNgAVRVwd695iKQrruYN0+iqAhqaqCiwox4D4Wgv18lP9+Fw2G+FgsLC4tTcfk7b+fKZ/q5p/Y91J+UXm8X4T15Gs6uBn6xo5lwMs3mUdhQPMY7KxJ0DMfpDpmio8cG769Js9QTomswM8J9bWCEkfv/kcM7X85oL6+pY95NX2SP60K6o5nXVkRY6gnj2vkzunbvJDYeXtraGqGiIjNdPpyaFEMVW6YqOTwap2S8TLyqjGbuC3sRxb/+8VFRFAqKyilfcBnBqrcyoqylZbSAzmGZRBqGIxD0nvocdhmMlOVsb2HxRtHd3cmSJZPPeLoOY2P5FBXBiy+2sHjxZN+9e+Hii9eRSMgZi95TORGI45gSIJpIgN1uCaMWbzyWMGphcQ7yyCP/wKpVk5PY9na46KJSolGYM+ejtLb+NEPAbGyEZcuyOHJEYMECP6EQZGVdhSzL44ZL+zOiQLu7JYqLV05sp9Np+vtbyc/PFE87O1UKC0+xXA/4/RCeklcmSZBOW+KChYXFmfG7332SW2/NXEx54gkfF1zg44knHBN1ReNxOHbMT1WVA4cDNmyAri4wDC92u4DDAYoy+bDvdkNRERw/rpCba8s4v80G1dXQ3Aygjo+Ppx7rLCwsLE6gqip3fPuX2O86zC+EGiInTXvKnfD+wCjb9uznj/UdPLSjmX/9cz1/2dnA3Zvq+eBv63lg7wAA7yjXeKZdpPMkkbXKl6Jgzw958fc/nuZAv3T9DagbPsuOeOE0F3i/DVYKQ/Q8tJUtf2mmuFibECaGh1N0dQ2TWwRD41HzNttJEaN6GHm8f35OZp1mTajg9UaWZYK5hZTXrqNw/tuIui5jTHNxRt7zlkG9hcUbxt69v6Bgirfunj0CubmmiDk0dCyj77ZtQRoanDgcs7ivYXpdiKKU8Ywaj4uo6vSoeAuLs40ljFpYnGNEo1EKC3+Z0fbMMw7mzXPw8ss+HA4ny5Z1Zezv6fGgKBKC4MNuh87OuQSD5p1rJsMlXV9EPB6noWEv9fUv09j4Mr29TbS2Qmx88X1wUACCE8WyZ+PkwIFUCiTJMl6ysLCYGcMw2LLlRX70o//kq1/9FAUFP8oYR/78ZzOF/plnRK66arKu6Msvq1x4oT/jXGvXQkfHpAOquTAzub+gYDKd/mQUBfx+AUlKEY8bJBIyNptt5s4WFhYWM1Axr4b3P1bP1vf9gsdC0w2WSuwGcrSPf188yrdWJ/nYwjT/tCzFT9fGSA118I1n2hEFqHAlGFr1KXYPZwoCATtcFN3Miz/6B0KhzOjNQCCLlTd+jK5575wlvV5nZbydww/W0905RkdHgmRymMpKnYVLYPcAhGKgqpPqopYGu2oqpqOhJNVlk6JpNAaB3Iv/mo/rtAiCQCArh7KqJfSMnNp8JZYEWbUiyyws3ghSqRSC8DTGlMWIrq4AXV09fO5zL/L888N88pPw+9+b8y5RXI7fn6S9PYGuz3zOri5wOjPriabT1jzM4m+DJYxaWJxjPPLIv3PZZZN17gYGYNmyEgAM42309Nw9UTcKzHp7K1ZkceiQzLx5To4dszF37mUAhEIzGS65sdk8dHfvoby8n9raKDU1CerqoLjYTC81a+7Nw2azZ4gMZ8LwMGRl5b2m925hYfHmZtu2F/jAB5Zy6NBVXH75l7nhhu/zyivw0Y+aafJdXVBYWE53t0h/fymPPy5iGPDSSzIXX5w/rd6cy5WZ/m4uzEzuF0UQxdlDivx+g3Q6RSRiYLN5kGbL97KwsLA4BRtueR/r/9LPr6pu4+iU5Jv/7oQfbgDvSc/6ggC3VOmoiSG2t0VwyykCwQKqP/B9nhsrRZsy95JEWO/t4fgvP82x+gPTrl05fzHzbvoiLxtV9JyUWW6m1ydRtzXRsasVr9dUKGw2WHsFvNSj456i50ai4PWbi027Dw5SVTa571AjFOWo9HW3v5aP6FWRl1dAd8g5rfboVJp6Vcoq55/112Jh8ffMvn07+cY3PsJ///e1NDaO8V//BT/9KbS1GTzwwFGGh5/hX/+1g7vvhu9+1yypdvvtUFVVRU9PjLy8FL290+u3x2IQDsvE4zqdnWZ2ZH8/wPQFJguLNwIrrMvC4hxC0zRcrv/NaHv8cTt33OHmwAGRrKyFLFiwLWP/6KiXsTGBkpIAsRjY7ZehKAqGYTA4uJXy8sm+oRB4vSvo62ugpiYxTWRwOGDePDh4UGTx4mLi8TiDg0MUFc1uSBIOg8NhigljY5BI2HC7p5sSWFhY/H2zY8dL/P73t/HTn3ZmiJd1dTA4CJ/5DGRlefnKV3xs357DLbeo7NkD998PV16Zn5FqNRVBMJ+cIxGw26d3Mk6TaplKwdiYk6Ki4Kk7WlhYWJwCp9PJe753L031X+Luz76NucONXFgM9lOst3ygNs0/7+ghuzyb63w+XC4X6z/8NV5+6NdU9z5FcEowVZ0/Se8L/8WW5utYfe3NGeaZiUSMukuKSCcD7HjuEAvtYzimXDdgh1XEaf5zL8m5XmpWuGhrs1G9sAxJ7GFwFFwO6OpNUVFsqrINDR2sXzR5jtYuieuuyEIbeZj6nmrmLrwEZbaB+a9EFEXmzV/Jvvqt1JWMZXyGaQOae+24subh8VgRoxYWZ4tHHrmX4eFf8pnPDDM1oaa3F97znla+9rURli2bnGSJIlxxhZnN8+EP/56bb55LQYGPXbsS5OQoKIqZudjXByMjMvPmqfT36wQCOk6nSCQCg4NjeDzaWRtbLCxmw4oYtbA4h3j00e9wzTXRie1wGCorTffP1tYVJJO/zyhQvWePwMqVAVpbVYJBhZaWQoqKKgHo7m6iuDjTHXBwsJhQaJTi4visTp+KAvn5AoODAzidTpJJ10R6/cloGvT0CPh8Mj090NenUFz8+tefsrCwOP+5664v8N//3TljEf7sbPjyl8EwbHzzmzLr15t1RZcuheFhGb9/5nVcw4BUSkTTYMcOiYULXRn7QyFwOGZfAx4aEtB1J0VF5cgn26JaWFhYvAbm1i7gvY83cH/JlVx1mimRSwE9ncQlJHj2q+8mNDqKIAisfesdDK/5LIdGMselPCes6H+UTT/9V2LjkzNd1xkd3YfXC26fg+AF8+icW0J9aPqYVukxmNs9yvZ7+xkd8rPzxT28shkadsHzz8DWHXECPrNvIj6QcWzfoB2HquB1QG2ggWO77mV4qP+1f1CnIRDIonrhOur7itjT5uZIt8qBdid724N4C1ZQUVVz1q5tYfH3TmtrK52dv+aOOzJFUQBB0Fi6NJIhik5FVeFTn+rl+eefRVFAkgSam2WOHJE5dkzG4XAyf74Dm03A5zMIhczFGLcb8vIS9Pd3nu23Z2ExDUsYtbA4R9B1nXT6axm19h5+WGHNGh/DwyDLF7Jy5aRraToNqZSf1laBBQsCtLdLFBevp7n5CIcP72FwcF/G+bu7JYqKVpBIjHC6BfacnDRDQ90AFBdX0tXlob9fQhsPHDUMU3BoapIQBDe9vSqqWkxZWbW1wmdhYTGNI0eOUFPTNKszKcDcuZBIRFAUKSPKs6bGoL195kKhx46ZUVrPPy9TV+fF7Z4cQHUd6utFyspmLpScTEI4LFFYWGaJohYWFq8rgiBQPn/xGVm6DcTgnVXw1uwOdn31BtpbmgGYV7ecwtu/wwujQfQpY6JNgssczRz48Sc4tH8Px4/Xk5sbJ52G48fDlJXp+PM82C7MZY/dSd8M6fV2XSN6dC83Vo+yoRLWlMBVVTAvd3Jx3u/OXFwPxwIZ29X5UdJdD9B4aAv6bEUE/0o8Xi9Lll/EwuUbKKm5nHlLNrB81XryC4rOyvUsLCxMHnnkJ9x888CM+/7whwHe/e7ZswnBXNgeGjqEYYAkidTUOKipcVBd7SArS5oI0BFFs/b8CVQVBCFOcrYC8RYWZwlLGLWwOEf4y19+wQ03TBbWTyQgGCxAEAS2bs0jO/vljFTS3btF6up8pFJeJEmgvb2Q48dfIitrP3PmNJKbq3PggOlYf8Jw6UyNRWQZDMOc5CqKQnl5LbJcSUeHj5YWF62tHmKxEubOXcLcuQsoK5uH3x/ISOuysLCwOEFDw0GWLp15gj2VQCBNRUWS48cnDZVU1SAanR6VMDgIL77oAeYyf342WVmT4mYoBLt2ubDbiwmHp6ux8TgcOiQTDFYSCGS/tjdlYWFhcQpWX3Edzw54T9knloKYplM8XoFofTDCyE9vYe/WTYAZNXnRR77Fi8oqQonMYy/IjuHZ/G2O7X2ao0fh6NEI5eVp2triGMYIlZWwdIMf6dJcdkZl4uN1S0MadCfhkiqQTpq2KS5TjNB1gzmFmcJHkmpCJ4msOW6DMucejmy/j3A4xNlCURRcLhf20zmCWlhYvC7E4234/TPvGxhIUlh4+nO4XCn6+wUCAcesfUIhcLsz52lut8bYWGSWIywszg5WiISFxTmAYRgMDf1LRqrCQw9J3HhjNroOg4NL2bixdWKfpoEsB6ivl1myxMWePSq1tQkCgUnxwOWCvDxoa4O9exVWrJgLgCjaSCaZlhYxlVAInE7fxLYoigQCWQQCWa/be7awsPj7wen0EgrJQOqU/WIxAZcLtCmOG11dTo4dy0PTYhQUJEgkoL7eTypVxK23vgNRFOnu7mDPnlZEMYVhgMORw8KFNaiqSkdHK4cO9aCqcURRJxIRMQwHVVULrXrIFhYWZ43Va9fxs/+s4Lb0XpRZouV/fQQ+MC/Jb7e1c+sq02izLitN55Of59m2D3H5u/4Psixz6a2fYP+2hbh2/oJK72R0ZqnHIHtoB89v7uDS25fT2BijpCSGa0pVkeygzNiqAuo7XThamugZS7FqhhR/LQ3ZOeYYfex4mLp5k/vau2Hphe8h7l9Pf8eTVAYno7kUAebnj9Bz7DcMOFdTXrXkNX9mFhYW5wanMq4sKLBz/DgEArN2wTBM34mmJpmVK2eea2kajI1J5OdnDpBmFOmrdP+1sPgrsSJGLSz+hgwODvK///vv3HbbSpqaemlqMtvTadixI5/vflfghRdk5s3ryEhB3blToqzMQ36+n/5+EafTmyGKTqW0FCRJnkhJyM8vp7Pz1Onu3d0qBQUlr8t7tLCwsLjoorU888ycU/bRNEgmbbS2yhQWmis36TSEQkXccsvncLlu5tixK+jvv45Vqz7M1Vffit1uR1EUSkvLWb58PUuXbmDZsg3U1i7F4XAgCAIlJeXMn7+KgoILCQYvpKZmLYsWrbJEUQsLi7OKIAh88us/5VMHS4nPsCb0WAt0RODacrgh2M8vNrdMpJQWueHC5p/wp29/jnTaFAjmLVnNwPKb2DKsZpzHpcC1zm52/Php/N7hDFEU4MgRG1lZ81m6uoryd1xJr24nMIPxc8dQkjnjGeo793WTPUX0ONIssPzCK8gtKKFk8Xs41D+H6EmZtPk+nULxZQ5te2Ci/qmFhcX5STrtnyihdjI33pjDb3976mfJbdtEsrMvJhAoIBabnlGoadDRIZCXN/080aiI3W6501u8sVjCqIXF3wDDMPj61z/BN7+5nEsv/TfuvnsXd94Jf/wjfOIT8Mc/Cnz967ncfjv87ncGLS1J+sfr28fj4PUG2L5dxe220dCQTWXlqW2Xy8vjtLWZqqvX6yWVCtLfP3P4QlubjMdTbNUKtbCweN1wOp0Eg5eze/fs5TZ+8hOJa67JwzDsuN0iug6//30Wl1zyLkRRpLJyHhdeuJ6lS1e/aidiQRBwOp243W5rbLOwsHjDWLJ8JZ/44WN8fmAD//dICfe2uPnf5mxu3OSjLQz/fqHZz22D20qG+cmmJvTxgqJuBW5IPc9DX76ZsUiE7u7jLKhzsOIjN7IpVUDsJLH10mCC8B/3cGiHOWHUNDh40ENl5QLcbnOxyW6XcHpnFhx641Hs48NjT3d3xr7OPoWCggIAbDYbC1Zex7D9StqGMueSdgkW5PcxUP8r2o83vObPzcLC4m9LXd3VPPHEzMnFgYCM1+vjmWdmntOFQvC971Xy3vd+gXnzsgmHVVpaJPr6YGAA2toEOjokgkH7tDT6dBricRuuk1d4LCzOMsLUYren4Yw7WlhYnJqvfe3jXHDBL7jiiukr6q2t8MlPKvz5zwsRRYGWFnjqqQB5eXmk05CbK1NSUozfn8+WLQoFBZUsWzZ8yuvpOuzfX8SSJRcBpjDb3t7E2FgfgUAMu90gGpUZGVHJyiq2okUtLCxedzRN48MfvpLrrnuRt7xFnzCaGxuDH/1IQpKCDA2V8f73lzIw4GLPniAXX/xuamrq/rYv3MLCwuJ1oL+/n7a2NlwuF9XV1dz7nx/juo4fEZgSAJrW4SdHnXxg/Txs8mT8ytP9PhzXfYG1F08KFVuf3Edpyx6KTtIPRhKwyxmkcNlqampKM+q/d3UNsvWFbWzI1/FmBp6yuaubdReZhUx/eNdDfPSWsYl9//OrHD77n9Md6GOxGMf2PcrcYB/2k9bboxq0jJRStXjjGde4t7CwODd48snfsX//r7nqqj4WLco0VzMM+MEPJA4d6qGwsJ/3vz9OUZHpj/HAAy6efrqar33tYWw2Eb8/gqKYCzWxWIp02mBkJE1BgWm0NJV0Gnp7ZbzeYtzuV7cAbmFxCs7IBMUSRi0s3mAGBgb49reX8/Wvt83a5w9/EPF4yti40Q/A175m50tfKufwYXj2WSfr11dSV+ehvl6hr6+ASy45dcpSIgFHj86hru7CjHZN0xgZGSGVSqKqTvx+v2WgZGFhcdZIp9Pcc8+PePDBr5KTE8ZmS5NM2igsrEYUq5k7dyVer5Py8sUsWrQcUbQSWywsLN68/OH//SsX7f0PCk4SN39Ub+c9l9bitE2OgbsGZOzvvIOFy+ehaXDgQDd2sYvEC/UsC2SGj6Z12Bz2s+yOd+D1OTEMg/37j1BU1IQkwc7HYcNJdUZ3RtpYUWcKIA8++DvefuWkGPJfv7qAL/7nK7O+j5bGfajRLRT4prvTN/fb8BRfRa616G5hcd7w2GP3cPXVDdx77xG6uvpZvjyK32/Q3CzR1KRw7bU5LF3qpq1tjF/96hBDQ2PouoTPdz3//u8/QBAEYrEo8Xg3gUDmuKBppoET6LjdIAgQi4nE4zYCgXxLFLV4vbGEUQuLc5Hvfe9f2Ljxq9TUzN5H0+Bzn/Pw/e9XAfCjH8ncfnsFbrfIXXfJXHppHVVVDjQNnnsuhwsuEGetMQrQ2GgjO3stWVk5r/fbsbCwsHhN9Pb2cuDALgxDZ+HC5RNpmhYWFhZ/Tzx+z/9S/ewnqPRltv+sQeHGNTX4nZPlP46H4diSa3CXlLNwYQyHA8bGUmy/5xBr1bFpJk8HRmTEdVcSTXWwZEmIE5VEtm0GpR+W5ZuiRDiuE8lpoyAIkTGNliMPUFdt9k0k4Vebvsj/+djXT/k+wuEQbYceYV7eCMpJj6GhGHTGq5m78BKrnImFxXnA008/wEUX7cXpBE3T+da3jrFmTZziYoXKSvusx/361wu5/fYvTWz39LSTlRWf0fQ3Hoe+PnC7/aiqE6fTSp+3OCuckTBqhWJYWLzBHD9ez7x5p+6jKCBJk258pgu9+Z2+9NIUzzzTNdHP4XDQ1ORCn75ID5g3nZERryWKWlhYnFPk5eVxxRXXsGHDdZYoamFh8XfLNXd8nPZ3/JZDQ5nPbh+o1nhsWz09oUkH+DkeWHb4cTq3Pondbi6Iu1wyl354MU9STP9JCUR1/hQ5rzyO1nMceUq5wFXroE9R+WNTHi+3u9h8LElB0Ny3+8AQNVOiSQ83QXb2qc3zADweL/MvvJXW6DIGIpnvxeuA2kADx3bdy/Dg9JR8CwuLc4u6urXs3WsKlYoiUlLiZc0a9ylFUU0DUczMj8/OzmdoSCUUEifMnHQdIhEYHraTnz+HrKygJYpa/M2xhFELizcYrzeLwcFT9zEMSKXMSaWuQzgso6rmdk4OaJpZA2psDOx2D2VlK9i920UkknmOgQGBvXt9LFy4+qy8FwsLCwsLCwsLi7+OS2+4hbEPPsH2k4wxb6tKsW1fPc0Dk4qnzw7XRpv50789QiyWIpmEffucVK2+hvZFH+DQSGZEZp4TVgyMsukn3cSiOpEI7Ny5kCuu+iI33vFJ5q3/IHJu/kT/g/UdTA3qPNYuctncVna//CdOl2koCAJVC1YjFd5EQ48T/aTu1flR9O4HOHpwC/psK/oWFhZ/c/LzCxgcLKa/33z+XLLEw86dpw68277dwbJlV2S0KYpCbm4RopjL8LCTvj6VgQEHup5LTk6BVX/Y4pzBEkYtLN5gbrrpU/zmN6eO3tyxAxYvNnOq/vIXkTVrAhP7RkZAHl/2b2hwMm/eEoLBXObPX09b21x27w6wZ4+X3buzGB2tY/nyy3A4HGft/VhYWFhYWFhYWPx1XHDJRlz/sIXnezKFgreWpWlpbGB3x6QZkiLBOzwDbPryAzz7tIKqLqGwcAnLVq/H/47/5Ok+e4YoaZPgMmeCAz/p4OC+daxYcctESnswGMRlm3ShT0QzIzp7B+0EPBIL/TvZ+fyvz0jQDGQFqVxxOw2jNYROimLNdhuUu/bQsP23hEOhM/14LCws3mA2bryZbdvmsWWLi4oKB/v22QiHZ+4bCsHBg0XU1Cyctk8URdxuD7m5ReTmlpCbW4zX67PKalicU1jCqIXFG8yCBQtpaFhMV9fM+5NJ+OEP7bzznUEefVSkrc3L+vWThae2bpUJBv309krE44UEAqZo6nQ6mT9/GcuWbWDp0qtYvvwKKitrrJuOhYWFhYWFhcV5wIKlF1D6lb082unMaL+iWCfZc5Snj2YKidfkxsh68W4EzcDr9dHScpB4/Ges/3QBL9pchBKZ578gW6do373s2vTYRJuu6/hdk6lMfnck45hw1JyD2mRYWtDAzmd/inYiJ/YUyLJM7ZLLiQfeQnN/ptirCFCbP8pYy29oadx72nNZWFi88dhsNq6//g7Ky9/L5s2LCQZX8cMf+tmxQyE9XvEtnYZdu+z89rcV3HLL5ywTX4vzFst8ycLib8Do6Cif+tRGbrppH1ddFUcaz5zauRP+7d9UamrmkpXl4+KLs1i7dtKZr7ERtmzx4PXWUlAwnxUr1k9Ej1pYWFhYWFhYWJz/PPH4fYz94oPcWDiW0b5/EA5Szq1LAhntzaMC20uu5NpbBLzeyfYDr0Rw7BhgrjejO9EUbBPqWPWuT/L8M08wePxBVDssmG/Q3XIfl0+pwPSNu5byj++/OuP4HcdzqLv4I6hqZj3B2dA0jaN7n6LcfxznSev1yTQ09ufiyltBe+tBSI2/Z9nN3JplFBQUntE1LCwszj7pdJp9+3Zw8OAmBEHDMBTq6tazaNFKJEk6/QksLN54LFd6C4tzmVQqxWOPPcDTT/8UWQ6TStlZuPBa5s1bzq5d97NxY4KFC0EUzQLVmzdL9PSoiOI83vrWD+Lz+U5/EQsLCwsLCwsLi/OG4eFhurufZ2S4mabvfoU7CkYz9jeNwpORMj6+KiujfSgOW/JKuPaDCzgRtNXcLBMavYLY5t+yJpAZbbqjF7aPSFxSbVCdo5PS4bH9Y6xd/xD540ZMPf3w8O5/5cbVGlkneaPsafNQtfpjuN0ezpTOtkbS/c9Rmp2aaDMM2NEEqg1qi80yAWAKpkc6VTR7FcsvvPiMr2FhYWFhYTEFSxi1sDhfaWo6wtNP30c63Y2qphFFGZerGJ9vLuvXvx27fXZHQAsLCwsLCwsLi/OTI0cOoCgvUVmpMzaW4Ld3/hcfzM2s+9k1Bj/vLef/XpIZOZpMwyNagKs/t5JDh/Korb0Tt9tDMpnk5d98m1XGQRyyGXnamoIbFmVe+3cvH+XmO3ZObD+3FRZc2UM01INj6AHy/ZmPg4c6VQqXfoRA4NS186cSi8U4tv8x5ub0YpegvgNUBcrzZu7f2GMD/2qqZqhdaGFhYWFhcRosYdTC4nzGMAw6OtoZGOhElu1UVFTjcrlOf6CFhYWFhYWFhcV5R2dnI5L0DPn5kwZHyWSKu97/P3zY34Y0xR1iKA7f7ynhS6uD2E+qqvSnbi8X/9Pvyc4JZrTvePZh8hvu58lO+MA6OLkc4HeefoHPfLhzYvuePyvc/rkEgiDQ0daI3n4vpTmpjGMaexR81R8kN7/oVb3XlsZ9qGNbONKus75u9n6GAc8fzWX9xpte1fktLCwsLCywhFELCwsLCwsLCwsLC4tzi4GBfhoadqHrpsWzKHpwOmUqKxsyaoQCdHYKgJtHvvIt3icewD6ljF8kCd8dKOJDdbkEnZnPfi/3qxTceRcV1fMz2l95eTMjO37Mxtrpr+sHLz/Ex+6YrGv6P7/K5rP/OTCx3dfTyWjDXVTlZ5ovtQ3ICMXvpmRO1av4FKCzs5Peow+zrPzUTve7jzupWnYjHs+Zp+1bWFhYWFhwhsKo5UpvYWFhYWFhYWFhYWHxBrB371aOH3+U5cubWbeuj3Xr+li+vBldb6C5ObNvY6OIxxOgqEjlQz/8Z36YXkEkObnfbYMv5HXyi4M9HBnKjGG5KBgncc972DHFgR7AEEVKMsuTTpAbjGdsJ/SyzP35ReQs+iSHOjNNl0pzUig9v6K5Ye9p3/9UbDYbjpPDXWdAkXRSqdRp+1lYWFhYWLwWLGHUwsLCwsLCwsLCwsLiLNPUdBhVPcjy5VGmGrqrKixfDg4HNDaCpsGOHQ5UNQePR0LTdHbubOHD37mSP5csZ2iKfmmX4PN53TzZnOCl3kzL91q/zpwXv8yTv/oOmqaxdevvGRj8KeEk04gn01SWpie2NQ38+ZdP6xcIZFF2wWfY05YZvZnvN8gae4D6/ZvP+PNwu92MRk9fNz8Us+F0Os/4vBYWFhYWFq8GSxi1sLCwsLCwsLCwsLA4y7S3H6K6egZVcpzqamhvh6amapYsuR3DWMbmzXYOHjzCypVhHA549z9v5PlF6+iazHhHEuHT+Yc51DbAg13+jHPmOuGSrnu591+vYMWKh9i4McXhTKN7AHY0DrJgSib8kWOwZPl1M75Ol9vN/Is/w47jmTVMAy4oNp5k3/YnTvtZADgcDpKiHy09e59ECnQ5yzIetbCwsLA4a1jCqIWFhYWFhYWFhYWFxVkkFArh80WmGR5NRRDA47FRVHQBiqIQiXRSVbWTpUsza3pe+8F1PFJ5M80nCZwfym8m3F7PPf1zM8RGhwzvC0R4/MvNxKIpCqrgYF/msfu7OrDbJreb20SSx39LOBye8bXa7XaWrP8Y29tKSU3J4veoUO18iZ2bH+BMvCzqllzElkYP2gxdNQO2NHqp+//s3Xd8VeXhx/HvXcnN3iEJhBDC3kP2EAQHMtxb616tttVWrb+6OhzVVltX6wR3tSq4FwqCCMjegRBGQkjI3nff8/sjmnBJCBFDAO/n/Xrxas9znvOc5+Qlh9zvfcaQsYdsBwCAw0UwCgAAAABHkNvtVmho65sMSVJ4uEl1dXVaseI5de/+mVJTA68pKjJp+/apuu7O11Vw3pvaUB74ce7ytEKF5HyiJ4ojVRm4ZKjOiPdo9f07lJnl1IIiuz7ZZpfj+6U7XZaSgLqFpaE6sW+1Nn32e1VVVrTYV5vNphOmXKs1hX3k3m8JULtNGpy4Vt99NeeQa4PGxSeo3/DTtHhrkjYXhKjaKVU7pE0FoVq8NVmDR05TbFxcq20AAPBTsCs9AAAAABxBDodDa9f+T2PGtDwC8wfz51uVklKsAQOczc5t2BCuTp2uUHJy58aylYu+kO/paRqVHDgf/aO9VtWfPFojCurV7YDN3DeUm+Wd+TfFJKdr6YIP5HdWyVH9sK67oOmef3suUXdcdIokacWOcPWY9KDi4hNb7LNhGFq79D31jlqh8P1GnfoNaWV+qoZOul42m63Fa/dvo6hwr4r27pJMJqWmZSolNbXVawAAOIQ27UpPMAoAAAAAR9iiRe9rzJh8tZQRGoa0YUONUlJqlJwceM7hkDZuzNKgQZe0uNbm/I/ekmn2xZqSFhiOLigyq/7s8UpZW6fhCYEf5QpqpS19r9PUC6+XYRj6fI5Fp05oqvPwc310+0XDGo/X7LSry/j7lZSUctDn27j6S3U1faXoA/ZJWrk7Vv0n3KSwsLCDXgsAwBFAMAoAAAAAx4KyshJt3vyJRo6skd9vKDTUJLNZcjj82rixXIMHuxUSEnhNQYFZNTWnqU+fcc3a27Nnp3Jzn9HQofkqK67Wpj98qhlpgVPXlxebtG7UH9StcLlOSaoMOFfrkT6xTFR9Ym+d1OtGpX8/QLOsQnr9g5N189mBmyutzwtV8og/KSU1/aDPmLPpO8XWv6+k6MCPjuvzIpQ56iZFRUcf4qcEAEC7IRgFAAAAgGNBdvZ6bdjwtazWcoWF+eVwmGSxWJSR4dLgwc0/aq1dG6kuXa5UYmLgKM2iogJlZz+rgQO3KyFhv/K99Vr06491fpo7oP7GcpP2njlbtes+0RmRObJ8vyxpTqX0yg6pc3yFrr9lZ2P9r5dLS7b+VqcMrtYJWYFT+jfvsSpm8H3qnJ550OfclbtJtuL/qnN84Pqo2XtDlTTwBiUkJh/kSgAA2hXBKAAAAAAcbYsWfaTIyNUaMsQp8377JZWWSgsWSNOmSZGRDWV1ddLmzX00ZMiFAWtzlpWVaMOGZ9Wnz2alHGRG+5Jv/Nr8yOe6NqM8oDy3Ssqe8rg85Xs0pW6+3H7p6a3SH06X3t6Yp4uuKm2s++Z7VnXXCK21zdDgLrs1snttQFtb91oV1vf/1DWz90Gft7Bgp5w75igzOXAE685iq+zdr1ZicqoqKho2dYqLizvkGqQAABwGglEAAAAAOJpyc3NUVvZfjRzZfEMlSaqtbQhHZ86U8vIscrlmqmfPEY3nq6oqtXbt88rKWqsuXVr+SJadbVVZ2SQNH36R/H6/XrtmuK5NzA6os7dO+nbIPUpI6ar1Hzyt88ZJaTHSy9nZ+sWl9Y31Xn45Ur/o10uPfNdFv7jjGe1Y9CeN6Vkd0Nb2IossWbcrs+eAgz53aUmRSjc+oz77jWB1e6XP1kgeI0adEzwySdpXHaHwuAyNn3R6i2uoAgBwmNoUjJoPXQUAAAAAcDg2bVqsoUNbDkWlhpGiYWHSkiVRior6dWMoWldXq0WLnlR5+c068cQ1LYaiO3aYtXjxeKWnP61x466U3W5XeHi4Lp+zTs/UjJRvv9nsaRHSlA1/1p4tq1QS1klpMQ3lEXGugDbDfA27J52UVqj1q1do0LRH9E1OXECdHik+mXb9TTlbVh/0uRKTUpQ2/DfakN/QntsrffCdNLq3dPbIKo3KqtfIrHrNHFqiwfEr9cG7s+VyuQ7aHgAARwLBKAAAAAAcIRZLVYs70e+vd28pLGyS4uIS5XQ6tXjx8yoo+KUmTlyqzEx/s/p5eSYtWnSCEhOf0oQJNyoiIiLgfEhIiK55/lu9YJwq136b1cfZpbML/y3H9qUyDENur1/pXZoq+HxSZ3vDBklJET5VlhYpIjJSw2c8oq+3BW7G1C3Jr7C9j2rLhmUHfa7o6Fj1GHuLVu2O1ZLN0oQBUlIL+y8lRkuTeuZr8YKPW/9BAQDQzghGAQAAAOAoMpsln8+jb799Tbm512vChAXq1cvXrF5hobRw4UBFRf1LEyfeouhWdnm3WCy64IE39Wj9KNXutx9ThE16sE+lnnpjm/71caFe/a90yx+l196VNm2T+nduCFn3VpsV3ylNkhQWFqZRsx7Sgm2pAffokmAotvRJbVyz6KD9CAsPV78JN6mk2qrkVjalT4ySHJW75PF4Dl4JAIB2Zj3aHQAAAACAnyuPJ0yGIeXlufXtt1Xyen0yDCktLUzjxkXLajVp6dI6ZWW9qBEj3C22UVIibdrUS/36XadJk1JbrPODuro6rVgxV7W1c9W79y7dOVt6/aEknZpbooSwhjrL9kmr9tTpglF1+l0fyWSSFu2QHpwnXTGxWqcOidNXO/waM7BpEye73a7xZz2or+berZN65TeWp8YZslQ/ozXfuTR05Mkt9qm2tlbpnUIleVs8/4OUmDqVlZUp5WC7SwEA0M7YfAkAAAAAjpA1a5ZpxYrZyshwaMIEn8IbltzUzp3Shx9a1K2bT9OnK2C3+h9UVkrr1nVTjx7XqnPnbge9h9Pp1MqVH6mi4n/q0WO7+vZt/tHt3acLNXJlocqd0st7pIfPaX5Pw5Du/sSqjMxMRaZGaepwaaPpJk2edmVjHY/Ho0Xz/qLJPXJl3m9bi7IaaZf5Ig0fN6PZvUtKSpS7/DmN7lnX2o9KK3aEKX3oNQSjAID2wK70AAAAAHA0zZs3W717L1Dfvs2nxvv90ksvNexIn5jYVF5bK61enaqMjOuUkdGrxXY9Ho9WrfpCJSX/VdeuWzR4cPO1SA/0wsOlWvJ6nv79Cyn0IOueen3Sua9HaO6jvWUySWXV0lrv9Zoy87rGOj6fTwvnPqATs7Jl3e9jZ2WdtNV7lkadeG6zvn7yzlOaNbSk1f59sCZRp51zk2yHWpQVAIBDa1MwylR6AAAAADgCHA6Hamo2tBiKSg0jNs88U/ryS+nccyWHQ1q5MlEpKVdp4sTBzep7vV6tXbtIhYWvKTV1o0aM8Mpiab0PW7aYtH17d8XGnqvTL5ug9V/2V6it4qD1rRZpWJpbhWVupSWGKCFaGlb7jD6f69IpZ90sqWH90sln/1EL33tEE7qul+37PsRGSP0cc/Xtl26NnXJxY5s2m01RCd1VXF2q5OiWx9uU1khhsd0IRQEAHYoRowAAAABwBCxbtkjR0c+pX7/WR3POni316hWruLjL1LfvKJlMTYNc/H6/Nm5crt27X1FS0moNH+455C73O3ZIW7Z0VXj4mRox4hwVFxdq2bJ/aN++/8m2qlw3jWr9+tkrbOo9LktjB4Q3llXXS0sqL9K0837fWGYYhha+/0+N67xSIfsNualzSqurpmrCqU1T8N1ut95/50Wd2GOPkg4IR0urpYU56Zp5zpUKDQ1tvXMAALQNU+kBAAAA4GiZP3+e+vb9nzp3br3e88/H6Oqrn2oMRA3DUHb2WuXmvqyYmO80YoRTdnvrbeTnSxs2pCokZIZOOOEClZQU6bvv/iGb7T1NnFiqlJSGTZye/qV078TW23rk22TFnHCeLhu2VGEhTeW1Tmlh8dmacdEfG8sMw9Dij/+jkcnfyL5fYOvwSN8VT9DE069vfC63260lCz9RTflOdYquk0lSUXWEIuIyNH7S6YSiAID2RDAKAAAAAEfL6tXLZTI9rQEDvPr660pt3lwvk0k64YRojRoV2bj50ezZGbriivuVm5ut7Ow5ioj4ViNH1isiovX2i4qkNWuSZLGcpqFDL1FZ2T6tWvUPhYa+r4kTy5Wc3Pya68+V/j2h5c2epIYNmC58t6veXLhbH7z+F53UaZ4i9gtl613S/IIZmnnpfQEjWxd/+qKGx3+p8P2CVJdH+rZwpCbN/HVAXY/Ho4qKhun8cXFxTJ8HABwJBKMAAAAAcLR4PB498si18vm2aupUj4YPN+T3S0uWmLVokU0XXZSi2lqzVq8OV1ZWnkaMqFF0dOttlpVJq1fHyeudoiFDfqHy8hKtWfMP2e0fatKkyoBNnFry2YfSupel2ye0fP65ZZI7Whp/zSINHj5BH7/5N02If0tRTbPq5XRLn+4+WWdc/mBA4Ll0/msaEPmxovYLUj0+aVHeEE0+43cyHyyNBQCg/RGMAgAAAMDRsn79Cs2f/3vdckutTAd8PPN6pb/8pWHTpYEDW2+nqkpasSJKHs8k9ev3C9XUVGrNmkcUEfGJJk2qUnx869e73dLXX9u0d+9YZWT8Wrmbd2jrZ//UTcMK1PX7a/dWSU99K3XJkG6cJX2xzq6Bl29XSmpnffbuPzUq8hXF7jeC1e2VPtw+UWdd9WhAOLr86/+pj22eYvYLUr2GtGB7X5109p2yHGq3KAAA2gfBKAAAAAAcLQ88cJXuuGPdQXeOr6uTnnlGuvXWls9991246urGqU+fy1VXV6P16/+uyMjPNHlytWJjW7+3yyUtXBiioqLxysz8tcaOnS6rtWmHpIKCAr34xF9VlrdRkqHCwlw9fHmRMjo1tfHKklSdd9cO2e12zX//3xoW8rzio5rOe7zS+9vG6KyrHw8YDbpyyQfqbvxX8ZFNdX2G9NW2LMVmTtOOrWskSb36DdegIScQlgIAjgSCUQAAAAA4GgoLC/Xpp5fryivLWq336KPSL38p2e2S0ymtWGFXZeVIZWVdJoejXps2PaaYmM81aVKtYmJav6fTKS1YEKri4onKyvqNxow5rc2ho9vt1ut/6qkrxucFlD+zdIyu+9MSmUwmLfjoBQ0wP62k/ab7e/3SvE0n6Kxrnw6415rln6mL6+XGujl7pa/WSUOyTBqc2fDRcmN+qFbtTtRJ065Qzz792tRPAADaiGAUAAAAAI6GNWvWqKzsV5o61dVqvVdekRISrPL5TlBGxqVyOl3Kzv6n4uLma9KkOkVFtXq5HA5pwQK7SkomqVevWzRq1NTDXsuztKRYK57N1LRh9Y1lLo/0v9036tKbn5YkLfrsVfXyPKaUuKbrfH5p7sZBOvPa5wJGpW5YvVBJVc/J7ZW+3ihdMkkyH/Ax1WdIr3+ToBNn3aKuGZmH1W8AAFpAMAoAAAAAR8P27dv19deXq6xsu/bsqZPZbMhksurCC1M0cmRE47qc//hHjIYM+a327HlOCQlfafLkQ+9GX1cnLVgQrrKyk9Snz281YsTkdtvYaNP67+RZPEZDuvsby/ZVSOsjn9fJs66WJC356n/KrHtIafutber3S3M39NWsa2cH7DK/Zf1Sff3Rk7r6FMl2kMGrHp/02ooBuuKGO9vlGQAAUBuDUeuhqwAAAAAAfozc3PX66qu1uu++evXs2VBWVye99lqd3nwzSmefnaDt24vVo0e9xoxZoPDw1turqZEWLIhQZeVU9et3q6ZPnxCw6VF76T9opObnPa+iiqsaR4V2ipM67bpOm9YNUP/BozTupPO0fFGIfKV/VnpiQx2zWTpn8Ba98+ylmnntKwoJCZEkdckcoOioKNksNQe9p80ihatINTU1ijrUEFkAANoRI0YBAAAAoB1t27ZVzz47VY88sqfZbvSS9M030oIF0t13t95OdbW0YEGkqqtPUf/+t2ro0LFHJAxtyatP3qRz05+SPaSp7NM1YRp+zU4lJTfs0LRiySdKLL5bmcmBHxXnrummade8Jrvdrry8POUu/qsm969r9X4LNkWqx8S7lJ6e3u7PAgAISm36B7N95lsAAAAAACRJL7xwt/74x5ZDUUkaP14qLZXq65ufq6yU5s6N1iuvnKedO5dp1qxqXXbZOxo2bFyHhaKSdMmvntBLq8cFlJ021KGP/jVCbrdbkjRi3DRVdn5IuYWB/Tpr6C59+vwFcjgcCgsLU63bpkOpcVkVFhbWfg8AAEAbEIwCAAAAQDuqr9+guLjW68yYIX3xRcP/Ly+X3nknRq+8cqH27FmlM8+s1GWXvaXBg0d1aBi6P5PJpMvvnK9XlqQFlF8xPl+zHzhFP8w8HDpyquq7P6ZtewM/Wp45dI/mzz5X4WFh2lcbr9YmKhqGVFyXoMTExHZ/DgAAWkMwCgAAAADtyGp1H7JOUpK0YEGYXn31UhUWrtE551Tqssve0IABw45aGHogu92uU25aqS/W2QPKfzHka73xn1sajwcOmyBv7ye0JT9wd6WZg4u08OVz1GvAWC3OPviOUouyIzR4xMnt23kAANqAYBQAAAAA2pHLdYht5SVlZ9t1xhnv6dJLX1H//kOOfKcOU6eUVHU6Zb427W4Ka8NCpUlR/9JXn7zSWNZv0GiZBv5bG3YH7u87fXCp6rIfVZl1rOauiFGNo+lctUOauyJGzuiTNWL0hCP+LAAAHIjNlwAAAACgHf3tb7fo3HP/qaysg9e5/voB+ve/18lsPj7Gqnw6998a7vqlkmKaylbnmhU+eYX69B/WWLZ96wbVrLhGQzO9Add/sSFWXSY+rnUrF8hTXyJJskUka+KUs5SWFjhdHwCAdtCm6RcEowAAAADQjsrLy3XrreP05JPZioxsfv4//4lXfPyDOv/86zq+cz/BS/+8Rhd1f0Eh++2l9OGqSI25YacS9lsfdGfuFpV/e6WGd/cEXP/VpigNOustJSYld1SXAQDBi13pAQAAAKCjxcfH6777PtbNN5+g2bOjVVMjeb3S8uUW3XxzlsLC7jruQlFJ+sVvntPsFSMCymYMr9V7j42Ux9MUgmZm9VXyhFe1PCc0oO5J/Wu0ed652le0t0P6CwDAoTBiFAAAAACOAMMwtHTpYn300fNyuRzq12+MLrjgekVEHHoN0mOVw+HQuw9k6pKx+wLKn115iq67+7OAsoI9u7T7i0s0tpczoPyb7DBlTXtDqWnpR7y/AICgxVR6AAAAAED72luQp+zXeumkga7Gsjqn9FHZH3T+NQ8G1C0szNf2jy7WhL71AeVLt9nVZcorSu/avUP6DAAIOgSjAAAAAID2t3r5AoWvn6I+XZo+JuaXSDtT39TEk88PqFtSXKSN712gyf1qA8pXbA+Rtf+jyt68VjVVZUrpnKkpp555XI+oBQAcMwhGAQAAAABHxodv/VNjdYvio5rKvsuxKP7UterRe0BA3bLSEq1553xNHVAtSXJ5pKc/kqwWadYoKS5Syisx6fNNaUruMUWXXPFrmUxt+kwLAEBLCEYBAAAAAEfO7L9fpsv6vCqrpals3opoTbp5l2Lj4gLqVlSUa8Wb5+nkAZW6/03pspOkjBY2qF+8JUw7jLN0+bW/O8K9BwD8jLErPQAAAADgyLn81pf04rIhAWVnjqjW24+MktfrDSiPi4vX6Ive1b8/i9bwHi2HopI0oa9D1XsWqLKy8sh0GgCA7xGMAgAAAAAOi9ls1iV3fqM3lyYElF81Lkez/3Z2s/rRMTGqMvfRlCGttztjUKE+ef+NduwpAADNEYwCAAAAAA5bRESExly9XIs2hTSWmc3ShX0+0Nuz721WP8RUrxBr621mJEuFe3Lbu6sAAAQgGAUAAAAA/CRdM7IUNuZ9bd/bVBYVLg03/VnfLnwvoK7POEQqKqnOKYWFRbZ3NwEACEAwCgAAAAD4yUaMO1Ub7Q+qsrapLLOTZFpzrnbkZjeWZfUdr815rX8U/WRtjE6adsGR6ioAAJIIRgEAAAAA7eTMS/6gd3acK5+vqWxMH6/WvjpG1VVVkqRpsy7Qmyu6yOtvuY2KWmlrRXf17tO3A3oMAAhmJsMw2lq3zRUBAAAAAMHJ5/PphXsG6brxmwPKn/umny64Y6nKy8tVsq9Qn7z1N106Nl/dUxrOG4a0Kteq99f30C13Pam4uLij0HsAwM+EqU2VCEYBAAAAAO2pprpanz3aTeeOqpAkZedLT38oufzh6psZqbLaEBU6uiit2xBFWOtkNXvl9ts1ZPR0TTllpkJCQg5xBwAAWkUwCgAAAAA4Onbu2Kqi9wbIYvLq1QXSg1dIEfam8z6f9PiniYof/H+6/Npbjlo/AQA/S20KRlljFAAAAADQ7jK795Zv8Fv65zzpsWsDQ1FJslikW6aXasuivys/P/+o9BEAENwIRgEAAAAAR0RFtUfnTbTKYjl4nZtO2asXnvpzx3UKAIDvEYwCAAAAAI6IRfPf1owR3lbrdEmUKvdtbrUOAABHAsEoAAAAAOCI8Pt8MrdhlTcTW1oAAI4CglEAAAAAwBExYtw0fb3J1mqd0iopLDazg3oEAEATglEAAAAAwBFx9vm/0OvLM2W0MiD03/OTdcWN93ZcpwAA+B7BKAAAAADgiAgJCdH51zyku99Klc/X/Pzr38QoIusK9erVq+M7BwAIeiajta/uArHoCwAAAADgR1v6zQK99O+71TUiVz2Sq1RcE651hemaMvN6XXjZDUe7ewCAn582rHBNMAoAAAAA6CD5+fnas2eP4uLi1Lt3b5lMbfrcCgDAj0UwCgAAAAAAACDotCkYZY1RAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYBAAAAAAAABB2CUQAAAAAAAABBh2AUAAAAAAAAQNAhGAUAAAAAAAAQdAhGAQAAAAAAAAQdglEAAAAAAAAAQYdgFAAAAAAAAEDQIRgFAAAAAAAAEHQIRgEAAAAAAAAEHYJRAAAAAAAAAEGHYBQAAAAAAABA0CEYBQAAAAAAABB0CEYRNCZNmqTf/va3jcfdunXTP//5zzZfP2fOHMXGxrZa57777tOQIUMOq38A8FPwjgPwc8Y7DsDPGe844OghGMVxo6SkRDfeeKO6du2q0NBQpaSk6NRTT9WSJUuOdtd+kvvvv19jx45VeHh4q/+YzZkzR4MGDZLdbldycrJ+9atfdVwnARxxwfqOmzNnjkwmU4t/iouLO77DAI6IYH3HSdKKFSs0ZcoUxcbGKi4uTqeeeqrWrVvXsR0FcEQF8zvuyy+/1NixYxUVFaWUlBTdcccd8nq9HdtR4CewHu0OAG11zjnnyO1266WXXlL37t21b98+ffnllyorKzvaXftJ3G63zjvvPI0ZM0YvvPBCi3UeffRR/eMf/9AjjzyiUaNGqa6uTrt27erYjgI4ooL1HXfBBRfotNNOCyi74oor5HQ6lZyc3FHdBHCEBes7rra2VqeddppmzZqlp59+Wl6vV/fee69OPfVU5efny2azHYVeA2hvwfqOW7dunU4//XT98Y9/1Msvv6yCggLdcMMN8vl8+vvf/34Uegz8eIwYxXGhsrJSixcv1t/+9jdNnjxZGRkZGjlypO68807NmjVLV111lWbMmBFwjcfjUXJy8kHDxgM9+uijGjhwoCIiIpSenq5f/vKXqq2tbVZv3rx56tmzp+x2e+Mvta15/vnn1bdvX9ntdvXp00dPP/10wPk//elPuuWWWzRw4MAWr6+oqNBdd92ll19+WRdffLGysrI0aNAgzZo1q03PBeDYF8zvuLCwMKWkpDT+sVgs+uqrr3T11Ve36bkAHPuC+R2XnZ2t8vJy/fnPf1bv3r3Vv39/3Xvvvdq3b592797dpmcDcGwL5nfcm2++qUGDBumee+5Rjx49dOKJJ+rhhx/WU089pZqamjY9G3C0EYziuBAZGanIyEjNmzdPLper2flrrrlGn376qQoLCxvLPvzwQ9XX1+uCCy5o0z3MZrMef/xxbdq0SS+99JK++uor3X777QF16uvrdf/99+vll1/WkiVLVFlZqQsvvPCgbb722mu65557dP/992vLli164IEHdPfdd+ull15q45NLX3zxhfx+vwoKCtS3b1916dJF559//iH/kQNw/Ajmd9yBXn75ZYWHh+vcc8897DYAHFuC+R3Xu3dvJSQk6IUXXpDb7ZbD4dALL7ygvn37qlu3bm1uB8CxK5jfcS6XS3a7PaAsLCxMTqdTq1atanM7wFFlGEZb/wBH1dtvv23ExcUZdrvdGDt2rHHnnXca69atazzfr18/429/+1vj8cyZM40rrrii8fjEE080fvOb3zQeZ2RkGI899thB7/e///3PSEhIaDyePXu2IclYtmxZY9mWLVsMScby5csNwzCMe++91xg8eHDj+aysLOP1118PaPcvf/mLMWbMmGb3mz17thETE9Os/MEHHzRsNpvRu3dv49NPPzWWLl1qTJkyxejdu7fhcrkO2n8Ax5dgfccdqG/fvsaNN954yHoAji/B/I7bsGGDkZWVZZjNZsNsNhu9e/c2du3addC+Azj+BOs77rPPPjPMZrPx+uuvG16v19izZ48xYcIEQ1KztoGjoE15JyNGcdw455xztHfvXr3//vs67bTTtHDhQg0bNkxz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AAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAAAAWHYBQAAAAAAABAwSEYBQAAAAAAAFBwCEYBAAAAAAAAFByCUQAAAAAAAAAFh2AUAAAAAAAAQMEhGAUAAAAAAABQcAhGAQAAAAAAABQcglEAAAAAAAAABYdgFAAAAAAAAEDBIRgFAAAAAAAAUHAIRgEAAAAAAAAUHIJRAAAAAAAA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OABHMu5x0rPPPqubbrpJd911l4466qhRXxuAw1+h3+N+97vf6a233tJvfvMbPfroowM1SIGxgGAUY4rf79e5556rL3/5y3rllVd044036itf+Yok6cMf/rA2bNigV199Vb/+9a/V1NSkhQsXjuq4mzZt0qJFi3T00UfrgQce0Jtvvqkf//jHkrTLDPGjFYvFJEl33XWXlixZMvBn+fLleu211/L2bWlp0ZlnnqmTTz5ZP//5z/O21dbWqr29PW/djuXa2tp9ahuAw1Mh3uMAFI5Cvsc9//zzuuSSS3TnnXfqwx/+8D61CcDhrZDvcePHj9esWbN07bXX6lvf+pa++tWvKpvN7lPbgIONWekxps2aNUsPPfSQJKmiokKXX3657r77br366qu66aabRn2cN998U5Zl6Y477pDTmXtf8Pvf/36X/UzT1OLFi3XCCSdIklavXq3e3l7NnDlzl31ramo0btw4bdiwQddff/1uz71t2zadeeaZOvbYY3X33XcPnH+HBQsW6N/+7d9kGIY8Ho8k6W9/+5umT5+usrKyUV8jgLGnEO5xAApXodzjnnvuOS1atEjf/va3deutt476ugCMbYVyj9uZZVkyDEOWZcnlco32MoFDhmAUY0J3d7euuuoq3XzzzTr66KNVXFysxYsX6zvf+Y4uu+yygf0+8pGPaNGiRcpms7rhhhtGffwpU6bIMAz98Ic/1CWXXKKXX35ZP/3pT3fZz+Px6FOf+pR+8IMfyO1265Of/KROOumkgV8+O/uP//gP3XbbbQqHw7rggguUTqe1ePFiRSIRffazn9W2bdt0xhlnaOLEifrud7+rzs7Ogc/u6A163XXX6T/+4z90yy236Pbbb9fy5cv1/e9/X3feeeeorw/A4a2Q73GStGLFCmUyGfX09CgajWrJkiWSpHnz5o36GgEcvgr5Hvfss89q0aJF+vSnP60rrrhCbW1tkiSv18sETMARopDvcffdd588Ho/mzJkjn8+nxYsX64tf/KKuvvrqgU49wGFvtMVID3KBVCBPKpWy/+Vf/sWeP3++HQ6H7aKiInv69On2l770JTuRSAzsZ1mWPXHiRPuiiy7a5Rh7Kmj9ve99z66rq7MDgYB9/vnn27/85S9tSXYkErFtO1fQOhwO2w888IA9adIk2+fz2eecc469efPmgWPsXNDatm37vvvus+fNm2d7vV67rKzMPu200+wHH3xw4JiShv0z1NKlS+1TTz3V9vl8dn19vf2tb31rH/8mARyOCv0eN3HixD3uA2DsKuR73A033DDs9tNPP33f/0IBHFYK+R53//332/Pnz7dDoZAdDAbtWbNm2d/85jftZDL5Hv5Ggf1mVHmnw7btUWeo+xa9AgdPLBZTfX297r77br3//e8/1M0BgP2KexyAIxn3OABHMu5xwEHnGM1ODKXHEcGyLHV1demOO+5QaWmpLr300kPdpDEpk8nowd/fq+cfu0d+Z79M26PK8cfplk/8uxoaGg5184CCxT0OwJGMexyAIxn3OODwRjCKI8KWLVvU1NSkhoYG3XPPPXK7+dHeW9FoVJ+66Tx98Ng39ZPrDTm2v1vZ2vW2vvPPT+iym3+os8/nlzhwKHCPA3Ak4x4H4EjGPQ44vDGUHoAk6dMfuVifO+2vGl+16zbblj597wR94Y6X6TkKAAAAAAAOd6MaSu880K0AcPjbvHmzqhxvDxuKSpLDIX3+4i36v5987eA2DAAAAAAA4AAhGAWgv/zh//SBE1pH3Gd8ldTVvPggtQgAAAAAAODAIhgFoFi0R+HgnvdzyTjwjQEAAAAAADgICEYBaMqMY7V8i2fEfSxLSqvkILUIAAAAAADgwCIYBaBL33+tHny7acR9nn7HqzMuvPkgtQgAAAAAAODAIhgFIJ/PpxPP/bh+8ljRsNs3d0g/e2GaZs45XrZtH+TWAQAAAAAA7H+OvQg5SEOAI9wnP9AoO7FZ7ztZmj1R6o1L//tUQJu7inTL5ROUzBZreVudjj3lfbrw0qsPdXMBAAAAAACG4xjVTgSjACTJtm099o0inXN0Sg//XVrXKr2+vkR33jZBE2q9efs+vjSk7sCVuv6mTx2i1gIAAAAAAOwWwSiA0Vvx7jsat2KuSkO55Z6o1GHO1IyJgWH3/9lTlbrko3dr3LhxB7GVAAAAAAAAezSqYJQaowAkScte/L+BUFSSXlrh1PQJ/t3u//4TuvSXP9x1EFoGAAAAAACw/xGMApAkmW2P5i1HEgE5HLt/wVJVIsV7tx7oZgEAAAAAABwQBKMAlEqlNDm8IW9dWVnZHj9nj65nOgAAAAAAwGGHYBSA/v7SEzp+qjWwvKpZ8oVqR/zMxnapdsKcA900AAAAAACAA4JgFIA2v32PXK7B5aXbqvXKpgnKWrv/zO//XqdF7/vQgW8cAAAAAADAAUAwCkBF8RfzljPhM3Xlh/9NX/9DkWKp/H3ThvTTpyp10nn/qNLS0oPXSAAAAAAAgP3IfagbAODQam9r07ETuweWM4Y06bibNGfufL3VUK67Hksoa0tlIam11ytv+XxdcuXHNPMohtEDAAAAAICxi2AUKHCvPfNrXTaknOhra1xa8OmzZNu2plW1a8EpkmFKsZT0RvJmnXf5Rw9dYwEAAAAAAPYThtIDBa53/R/yljfHpsnj8Wjzpk06qsGQJHm2v0KZeewFB7t5AAAAAAAABwQ9RoECZtu2alxL89b5Gy6VJG1Y/qQaywfXr9jq1cnnNRzM5gEAALxniURCjz/6J3W2bdG48VN1/kWXyuv1HupmAQCAwwDBKFDAlr3zlk6Znh5Y7uyTjjn9ZklSvO0VaUgwGsk2yuFwHOwmAgAA7BPbtnXHNz+n5nf/okvnbNSM8qw2L/foM/dP0tEnf1D/cNuXDnUTAQDAIcZQeqCArXj5f1VcNLj86pqgJk+ZKkkKa33evr6qEw9m0wAAAN6TL33uRh3r+Ym+/6F1OnteVrMmSBcea+jHN6xWVfe3dcc3v3ComwgAAA4xglGggGXbH8tbjriPl8PhUEd7u6aPSw6sT6SlibPOP9jNAwAA2CcrV6xQaeIxnTknNez2958UU/fq+9XR0XGQWwYAAA4nBKNAgUokEppWsTlvXfXM6yVJq5Y+o5rSwfXvNrs1ecq0g9g6AACAfferu76um8/oHHGfW05v1j0/+/ZBahEAADgcEYwCBeq1Fx7VsZPtgeXlm6UFZ14pSerb+nzevp2pcXK5XAe1fQAAAPsq2d+iipKR95lcJ7VuWZm3zrbt3ewNAACOREy+BBSorUvvlfPoweVlrXWaXVoqSSoyV+ft6wjPP4gtAwAAeG+ylku2LY00b6SZleR0q6WlRQ/+9seKda2S15lWxvKppPoovf/af1Rtbe1BazMAADj4CEaBAhVKvZy3bJWdI0nq7+/XpMr+gfWGKdVPp74oAAAYO+addLFeW/28FszI7nafh98o0tTZp+mX379V/3BWq8pCg9u6+zfpZ997W++78ZuaOWvOQWgxAAA4FBhKDxSgbVu36vim3oHlVEaaeuLNkqR3l76kpprBfVdtc2jGUfMObgMBAADeg2s+9DH97LlJyu4mF01lpAeWNKltw0v6/KL8UFSSKkqkL1zSovt/8VUZhnHgGwwAAA4JglGgAL3+7C81vmpw+dXVbs0//lRJUvfGp/P23dZfLa/XezCbBwAA8J4UFRXpk/96jz5xT5O2duVvW98q/eM9U3XqeTfq/fNb5drNNyK3U7p4zjY9+9SjB77BAADgkGAoPVCAohsfkCoHl5uTM+R2524H3uTyvH2zQYaPAQCAsee4E09W3fdf1O03zVapr1cet5Q2pLh7hu74xYu6+ydf0dy55ojHOH6qoe8++7TOu/Dyg9NoAABwUBGMAgXGsizVeZblrSua8D5JUiqV0vhwd9626snnHrS2AQAA7E/19fW64JRaffCE3oF1v1m3QJWVlXI6rBEnZ5Jykzc5ZR3YRgIAgEOGofRAgVny1t918ozBWlltPdJxZ9wkSVq5/E1Nq7cHtq1tkWYefdJBbyMAAMD+4tgp2HQ4XJKkkrIGdfSO/Nlt3VJ5VeOBaRgAADjkCEaBArPq1f9V0D+4/Nr6YjU2NUmS2tY+mVdna1NPqUKhnWYjAAAAGFN26vG5PRhddMXN+tPiymH2H/SnN2t0yZU3HaiGAQCAQ4xgFCg0XU/mLfZ5hvQI7V+Sty3tnXUQGgQAAHDg7DwU3unMVROrq6uTb9x5enZ5cNjP/e2dkMoaL1Rl5cjhKQAAGLuoMQoUkFgspplVzXnramd/UJJkmqZqi1rytpVOPHPUx47H41qzaoVM09D4iZNUW1v73hsMAADwXtnD9xiVpBs+8ln94qeWXrn/fi2YKVWXSq3d0utbGzXnhMt0/RUfPrhtBQAABxXBKFBAXn3+zzp38uDykg3SKTe8X5K0ds0KzWwY/OKwrVuaecrpezxmMpnUQ7//hezEes2u65TfJb3xblidyVqdd+mNahg/Yb9fBwAAwOjtVGPUOfgVyOFwaM6cOTpu9v16c620tUtq73PpX775e7lcrp0PBAAAjjAEo0ABaV32S2nu4PKKjvGat72GaPOKJzSzbnDbmragzqyoGPF46XRa9/78W7rimHWqKhlcP3N8n4xsn371wPd03hWfJRwFAACHjNMx/FD6HWKda+Sulk6cnlv+2/IwoSgAAAWCGqNAAXjh2af0qQ+ep+f/+pQ+89/SJ/5benaJpIpzB/Yxet7I+0zMOXWPx332b3/R+TPX54WiO3hc0ocWdurJv9zzXpoOAADw3uw8lN6ZH3qm+zfmLzurDnSLAADAYYIeo8ARzLZt/ecX/kF1Hb/Xd+f3yXdibn3GlH71prTY0aZrbVuSVO7ZkvfZUN2pezz+to1v6YKF9m63e1xSVaBNbW1t1BwFAACHhGOEofSSpEx+jXWHv04HUjKZ1NIli5WM9amiql5HzTmaHqoAABwiBKPAEey+//2Rjo7/Vu87Lpa33uuWbjlRqlnzvO7+nzt01oVX6KgGY2B7T1SacvQ5Ix7bMAwVuRN7bMPkqj5tbd5MMAoAAA4JhyP/Je7OQ+m9Vnfesq+k6YC0wzRNPfzgvYp3vqtjJ3Sq3m+pbZ1X975QrRnzztHJp52754MAAID9iqH0wBHKtm099/D/6fIZsd3us2haXK898WutX/aESooG16/Y6lVDQ8OIx3c6nTKze26HaTrkcntG22wAAID9auceo0NnpZekEm80f7lqxn5vg23b+s09P9Tc8Av64Cntmjne0vgq6fgpGd182lalm/+o559+dL+fFwAAjIxgFDiCtLS06PFH79avf/YB/eA/G9XkXCKHY+TPHFW8TeuXPZG3LmI1yrGHD7pcLmUcFcrufiS9JGlZa5WmTZs+muYDAADsdzsHo07XYI/ReDyu6hJzYDmalKrrJu/3NqxZvVITAis0qcYcdvuZR8W0ecXTSqVS+/3cAABg9xhKD4xRkUhES956Tq0bH1Y28ZoqQhs1Z2pKF0yXNF1auU56cd2ej1PiNWSnN2noexJ/1UmjasP8k87TC8vW6Myjh09HO/okV2iygsHgqI4HAACwvzm081D6wZEsLS0tGl8+uK2lW2pcOG6/t+H1Fx/VB+aNXIJowZQu/f2VZ3X6WRfu9/MDAIDhEYwCY0AikdCSt17RlnV/USb6kkr9azWjMaYzmyRNHP4zDbXS2t49H/vNrbZuO9/SjmA0kZYmzjpvdA0zo4rEbL2wXDrlKMk1pJPpxnannlg9STfe+pHRHQsAAOAAcDh2P5S+q2WVpnoHN3XHvZru8+3/RmRj8u2hslBjTVaLl43irTYAANhvCEaBA2Tz5s36w29/pEhPu8ZPnKGrr/u4ysrK9vg5wzC0bNlb2rDyL0r0PK+ge6UmN/TohKnSyXsxf1FxSMoGpf6kVBIYfp94WspW9uuvy1vl947XhGrp3Wa35p8+bY/Hz2QyUstv9f6Tpbc3Sr98SsraDgWCFUpZQY2ffJxu/tgieb3ePR4LAADgQNmlx+iQofSx7rVSzeC2mFFyQNpgaw+1jSRlMpLbcwBCWQAAsFsEo8B+lkgk9KXbr1O5/3Vdf1GrqiukdZul//evd6m8/lLd/m//PVC/07IsrVmzSquXPaLe9qfkd7yjiTUdmjvD1vwT9/7cfVHp7ZUutXbXy3Qfo9lnHaeP/fpH+r/L2+XfqZdC2pA+85R0+4+k6ppO/dcXTbkzjSqrKtXxLtfwJxji78/8Wgub0pKkY5qko8ZL75of1uxjz5THw2RLAADg8LDzrPSOIbPSp/s35gWjGWflAWlDWc1UtUbWqm6Ed+Svrw9q/olnHpDzAwCA4RGMAvuRbdv69D9erNs/9JymDBniPnemNHfmJj358s91601LdNqJZXKbb2tcxTbNnZHVjGP2/lzJlLRklUNb2muU1hyFq8/R9DmLdNo1M+R0DtYL7X77DX3yV3/RMU3SeUdJDof08EqXlqayuv0OafKU3H7/+t2I7v1WVr64Tw8/cJ8uueL63Z47Eomowfls3rq/b6zUqVeeu8dJmwAAAA4m586TLw2pMerItOVvCzQckDacfvYleuDu13XjaV3DToyZyEhru+t05pSpB+T8AABgeASjwH707NNP6Kx5i/NC0aHOOyWl5//+gs6fL1VXjP64piktXyut31quuDlTReWna9LMS3XspcdowR6Gqjd2vaLPL5SWdEpPvCy9ZTUpXFenc+avVe24zoH9/H7pli/163//3zKtfOHXWnj2xSotLR32mEue+7HObBr8khGJSw3zP0YoCgAADjs79xgdOpTer568bf7wpAPShpKSEk2YdbZ+/dzvdNlJ+WWOtvVIDy9t0FUfvu2AnBsAAOwewSiwH/35gf/Wf30qNuI+N75f+vWfpc/evPt91myUVm4MqS81Td6SUzRx6mWae/YCzSsq2qv2bNm8SQuKuyRJ86qkWeXSv+sU3TprhSZVjNcD33fplI+1qXZ77VK3W/qHL8f1w28+pwd/87+6+R//eddjblyruZUr89Yt7ZiuM06ZuVdtAwAAOBh2rjE6dCh9iTf/ua24avoBa4cnuVrnHiM9tlhKpiXDcsgVmKCaiUfrQ7deomAweMDODQAAhkcwCuxHTvVpT3MNTZkobR0yaqu5VVq21q/u2CS5ik5UXdMlmnfcGZp27p4nahqJbdt66u5v6+bQ4LoX2qTiCe9qUkWuZ+cVM8bp0btcOupD29TYOLjfp/41pTv+6z8Vi92qUKg475ibFv9Ypw0Z5bW506m5p//je2orAADAgeJ0DD+UPhqNqiZsDqzvjUu1MycfkDaYpqlSLVdtqXT1wty6F1tO1MKLPnVAzgcAAEaHYBTYj8ysR7atYWtH7dAfk1q7Q/r10xeqsuFCHX3M+bpo4bj3fO6+vj6tXvmGultflJ1artJgi9zL3pLqB/fZFiqSz5PfuIun1uiZ37iVev9mzZgxuP6fP9+vX/1quhYtWq6ysnJJ0rI3n9MJjZ15n99inqaF5QdmogIAAID3aufnsh1D6bdt3arJ5YPrW3ukKTuG0exnq5a/oZkNgyFsX0KaPPfyA3IuAAAwegSjwH4077jL9PrSV3TivOxu9/nVw+W6/at/07xj5u/zeZLJpFavWqr2rS/IiC1VsX+LmsYldEK9BoLQnl5T4UAm73PVJ1Yq5JDebZOOGvLcf9akCr36Z6feTm7UMUMmgvrQh1r1xz9O1amnvqOKimqlm++Tv2lw+9ubfDrhwg/v83UAAAAcaDv3GN0xlL67bZVmDBnp0x3za6bHowOhZ8Oj8gwpX7qiJawFJ48/IOcCAACjRzAK7EfXfvDj+vhNd+mYWauHHVLf0S29s2G2PrkXoahhGFq3bpW2bnpBqb43FXRvVENNv2Y3SPNG6Kj54uNdumxIL4g3OqTTPlGm7oj087ukr9Xk96BYMLFMbz/j1quJtVpwyuD6K6/s0SOPzFCm7yt6/1HJwXZlJbvmKvl8vlFfCwAAwMHm3GXypVz4GetaIw0ZtBPPlhyQ8yeTSdUXbcpfWX7qATkXAADYOwSjwH5UVFSkL3z5d/qHr31An752rebNyj2IW5b01Cte3ffE0frejx7c7ecty9LmzRu1ad2LivW8IZ9jrerKezS10dbM2XvXlr63e6QhwekbyXKl276iqTNOVsOUO/WT5/+mj54qeYfcBY6qKda3fjld8eQanXPO4JeIRYti+tuTt2v15vM0fWIubf37hlKdcuUFe9coAACAg2x3Q+mN2Ja89Yaz+oCcf/mbf9PxtYPPVdt6pKOOvfiAnAsAAOwdglHgPbIsS39/7SW99vJfZFmm6sZN1X98+2965M/36hcP/1UeV0YZM6gzzr1Jv/jlB+XZPkTLtm21tbZq3ZpX1Nf5qlzZVaoOd2paY1ZNM/Zw0mGk0tKajQ61RSoUzTRqivl23vbaCz6rU09/nyzL0tSeVzWuTLrzcSlQJAUDTnUaTjnKTF31qaD8wRl69NHVuvjiwaFn555n6ZWXn9CStWerqb5a4+Z9XI6RiqkCAAAcBnbpMbp98iVnpjV/fVG9DoR06zPSkIkrN0TGaWE4fEDOBQAA9g7BKPAeNG/ZrF/8z+1aeMxWffLKpDxuaePWF/Wn+/6qmgmL9KO7Xh3YNxKJ6M03nlFP24tSeoXKQi2aOtHQwsmS9nICVNOU1m2RtnWElbSaFCg5TvVNCzXzjOk62uPRkw/8SifV/Hxg/9URaeEVH5UkvfHc41pYEZPXJc0slyIp6Y05n9f5xy1Qa+sHNHN2RlJAfv8s/eEPK3XVVYP1Uk8+xdbbbz2t3z3zAd36ub3swgoAAHAI7DqUPvcVyO/oyVsfKN3/M9J3d3VqWnX+xJWh+nP3+3kAAMC+IRgF9lEkEtH//vSf9MVbtsg/pMxmU4P06Q+26a/P36f/+vprmjk5rRJ/syY1pHTSeEn7UGd/01ZpU2tQscx4eYPzVDv+dE09YY5mBALD7t/65M/lHNKmNzMNuq46Nzys628/lndI7dHF/SU697Kr5HA41Nn5dXV2fkFVVVJdnVdnnz1Ld9+9UjfdNDiL6jHzbfkDv9ezzy7SmWd+cO8vBgAA4CBy7BSMulwe2batsD+etz5cvQ9DdvZg1VuP6JQhI/RXbXNp1jmn7/fzAACAfUMwCuyjh/74C91yeX4oOtRFpye1dOVynX+S5NmLf2ltXdK6LT71Jerl9M9WZf1pmn7UsWpcMLoJAbLZrOq6Xh+YnV6SHHMvlyStWva2Tg225e3vOvHDA0PijznmbD388EW6+OK/yumUyss9uvLKWfrhD1brU7elBz4zc6Ytv/9D+utfI7rook+N/uIAAAAOMteQYDSblZwul3p7e1UTHiwZ1BOV6uZOGu7j+8y2bbmjr0lDgtGOzBTNYOJKAAAOGwSjwD5q2/amxu9h7qFT5kuvL5VOOXb47X1RafVGt7r7a2R7Z6q0+hRNnbFApx5Ttc/tev3FZ3RaTWawnXHphKty4eXaB+/QjKLBfV/t9OrUT1+f9/kLL/yKHn30LV1ySS5ALS5268M3zNQd316nf749NrBfU5Pk99+mBx+M6P3v//d9bi8AAMCBNLTHqGVLLpdLrS1bNbVscJ+WHmlG1b4/fw2nefN6za4ffHbKmFL1tEv26zkAAMB7QzAK7COvO7XHfcbVSMvX5v53MiWt3uRUe0+FDOd0lVScqKapp+r4i8bv10mM1v7lR1ow5F/2S31lunLqNLVu26p51sq8fSOTL5bX681b53a7dcIJd2nJkss0b16uJ0U47NRlV0zV//tmrz7/hY1ybz9+XZ10xhlf0W9+06PrrvvvPbbNMAxls1n5fD4mbgIAAAeFc8gjR9bKBaPdras0a0hFokjCL7d7/3412rTsz5owpITSu80+zb1s7n49BwAAeG8IRoF9ZFrePe7TGZHWbWvUMyvO1/hJCzX7zKmat58fuoeybVslm5/JG0afnHKeJGnxb7+rS0KD61dEnDrlo58c9jhFRcXa/EatGhtbVFqaWzdlikMnnNigu+6aqptvflI7RoGVl0uXXPJ93X13j2688d5dAk/btrVi+RKtWfF3BZxRuZxSPONXRe1UnXDymfIxnAwAABwgtm3L5RxczlqS0+lUvGdt3vNSPFu6X8+bzWYVtpblrYt558npdO7mEwAA4FDgNzOwj0rKZqorMvI+Ly2ZoE9+7j6ddf6tmjp15n7vibCzFcuW6vSKwSFbsYx01PtvUzQaVVP3y3n7ri87SeEdqedO3nz2p7rs+BI9++dQ3vqzz46rurpev/nNdYoNnkbFxdK11/5Kd911iSxrsF6Xbdt6+omHlG17WJfNbdYFR/fq3Nm9unx+m6YWvaiHH/g/pVJ77nkLAACwLyzLyusxam3vMWrGNuftZ7qqtT+tenexZjUYA8v9SWnS3Mv26zkAAMB7RzAK7KPLr/yY/vfBOg3JAfO89a5PNQ0L5ff7D1qbljzwQ5UNOd1znQEdc/wCvfS7H2t2+WBDW2LS/Gs+P+wxWrdt0czwEknSxbPq9djD+WHuhRcuVVPTefrznz/x/9m76/A4rnPx499lXu1KWjGTJcuyZWaKHbDjMDUNY9uUktv29tdbxltubyGFNE0bLCRxwGEwxsy2LFlgMcNKWsb5/bGOdtcCy44TJ+n5PE+fJ3PmzMyZ7aPxmXfOeQ/2mMCwVgt33vkSf/7zcoLByCr21VWHSJYfYXqOL+6lBCDNAqvK2tj4+vqzvl9BEARBEISJhMPhMUeMKgLdcfUUhmzOpf6Gl1ApotvH2s1kZuWe02tMJBAIcPjgHl5a/xgvrX+Une9sxOPxfGDXFwRBEISPChEYFYSzlJ6ezporv80P/pxFdX30T8nhhCc2WHinZhU333b/B9om5bENcdv9GUsIBoOYj78QV76XKWRm54xsBwIBdm3fwnP/eIQXHvsh0skYqlolI8WXQ3V19P70esjM/B1LlnyRt9/+Fl0xi9wrlXDvvdt4+OHZ+Hw+ao/tZnpOdDX7U1n1IPO143a738NdC4IgCIIgjC0UCqGICVC+m2NUK4+f9qOzFJ6za3o8HtK1jXFlkmXROTv/6bQ0nuD5f/4O/dAG1pbVcOnU4+TI3+Kt5x/k4L6dH1g7BEEQBOGjQOQYFYT3YHrlXAqLn+TVl//Fhu07kMvDqDRJrL3sboqKiz/QtrS1trLQ2DOyHQxD7trPsG3DUyy3RYOTDj8UXvnAyPY7m9+gds/rzEnp4QJLEG8x7DoIfT64dgW4tMtw912N0/lzjCdn1hcXh3nttU+zbt3LvPmmlWnTHiD35CAIuRw+9anDPPxwORbVbaNGip6qMNlOS3MzpWVl5+iXEARBEARBiAiFQvFT6aXIiFGL1hVXz5J27vohR/e/xdz06EydTjuUzV53zs4/kd6eHg7veoar5wzG3XdGokRG4gDba9+mRquntHz6B9IeQRAEQfiwE4FRQXiPDAYD11x3B3DHeW3H9n//nutN0e1t3QoWrb6UTd9Yg9wWLd/qSGXtzLkA7NjyFu5jz3BHhWNkv1kDl02FQQ/8ZYOMO79yKwkJCTz77CauvnrvSL2LLx5k/fovc9VVv+Xtt614vXcwZYo0sv+uuxr4y59/hn3oLqwJ+nHbrVBAIBw8B7+AIAiCIAhCvFFT6UMwNDREmiXaZ+kdgvSiczfN3df5NhRFt+v701hqtZ6z809kz47XWT1tcNwP0wuLXTx3cJsIjAqCIAjCSWIqvSB8TPj3/ituu9k8kyO7trLUOjhSFgiB9YJPARAMBqne/RoXFjgYi0UHl5bC/t3bAFiz5te8+aYprs6qVdvZvv1pLrjgNgYGnuPgwfhHyt33Onir8Y909Q6P2+7WARNp6Znj7hcEQRAEQThboVBoVI7Rvt5uUizRsk67DJvNNurYs2G32ylKjs9fqs9cfU7OfTqBQADJ14NWNX4dmQzSjXa6YnMhCYIgCMJ/MDFiVBA+BgYHB5lOfC6r5JV30fnqb5ltiZZt6tGgVXSw9bXv0t7eSYVl7KDou4qTJd6p2gUXXopOp6Og4EEaGm6lsDAyysJsBrP5p3R0zGPhwss5cOBtduxYzcKF0RGg197g5YXn/oh9+wUcrDsBshBWYwK3rVtMemoCQ4EkEhMTz9lvIQiCIAiC8K5wOExVM7y+JxIULMkBh+oEipi1luxuHXL5uRkvUr33BRbFxFjrOhWUr1x5Ts59Oj6fD70qcNp6FoMXh8NBWlraB9AqQRAEQfhwEyNGBeEjTpIk3njqT0xPjpbt64FB53YWalvjK5cZWVq+jaUzarHqHeRYJj63TAZKKbqCaUHBVBob7yV2UdNp00Ls338vgUCAmTOXY7Hs5O23NSP7GxvhmfVBDAWv87M/1POrPzdy95cP8ujmv3HPj95k/rLL3sPdC4IgCIIgjO3IoQM8cPMFdNbDRSmwKhkO74dHf/t9Gtu9I/XcYcs5u6Z8aEfcdqe3AK1We87OPxGNRoM3oDhtPYdXjV4/fpojQRAEQfhPIkaMCsI5JkkSNTVV7N6+AblsGCQZclUyS5ZdSW5e/lmd0+Px0Nvbg72/CbejmaCvA1moH41yGIPOw/DmFyElWv8YJhI6G0gyRsv29MpYekM0eqrTwmQWgw8T38Feteoe1q/fxtVXV42UrVvXy3PPfYMrr/wJZWWz0WoPsWHDLJYtc/Od78Af/hBZzf5dGRnwze+6eOutw/ztb//LV7/6f2f6kwiCIAiCIIzrePUxfv//ruKhi5pRx7zxTEmFT/k6+dzvB/jBA8Vk2tSElKnn5JqtLY2UZ0Vn4wRCYCu69JycezJUKhU+mRV/0B53z6dqG7QyJyPjA2uXIAiCIHyYicCoIJxDkiTxr6f+SIpxPzde5EZ9MseT29PEWzuPU1O9iovXXDfqOL/fT29vLwP9LbgdzfjdHRDqQaUYwqB1k5gQJNUKOelAevyxPl+IgdBgfDuKsqkIe+PKelJMaNXRTPwzyuHVFyA/afz7GfKCPil+MQKZTMZFF/2eLVvWsmxZNLK6bNmb7NnzCnPnriErq4ATuz/LV//7l3zpSyHGG5SwapWXl17agMPxA0wm09iVBEEQBEEQztBvf/BFfrW6ecwAoUEDv1jj48ePt/HTBwpQGLJHVzoLjYeeY1nMqY62qJl++axzcu7JkCQJo3KQzUdgdWVk5s+pDjbryJ8yB9lYOwVBEAThP5AIjArCOfTmG88xNXsPFcW+uHK9Di5b4eCNHa/y9D87SUsGKdiNSj6ITu3CYgpgS4TMFOJGfk7G1o2trIwZ6NAwBJjM5Cf4R8rqBiFleQp7j+nwBcyEZUko1Wl0uA7TMdxHhnn0eSUJnj0m4+Lbrhi1z2g0YbP9itbWT5F98gUgMRGamr5Db+8s2uq2s6pSxb9eTmL69J4J23/99Y2sX/93br31c2d244IgCIIgCGPo7e0lwVuNTj1+nUQDBBxuPL4whsSi8StOUigUwhQ6HFfmUE1HoTj91PZz5dCul1leOkBDJ7y4G+ZNgTRLZN+gG/Y0mDCkzGbRrAUfWJsEQRAE4cNOBEYF4RwJh8O0ntjFhVf6xq2zaoGXR57exbXLz91127fVo4gZkbl1UM/0tPjE+4c1M7hq9V/iFhbw+/3IDnyalw7ArHyozAbFycED/W54uR4qV0s0Nr5NRsbNo65bVjaHV165ibS0J1CdHBk7a1aQ9evvZFHGDECG3iCdtv05ORJbt5444/sWBEEQBEGI5XK52PjGo+ze/EvKTO2nrZ9nCdHRG8BaWvaer117bD/TsqMfpR0eyJ9+5Xs+72S1tdSRo96OSg6lmZBjg82H5QTUWSiUCnT6JOasWoHVav3A2iQIgiAIHwUiMCoI50hzczMFmf0T1pHLwGwElwcMusmf2+WBXjsMOtR4/HqCYSsyZSoqbQa2gachJjDabZrBrORocLbHDbNv+dqo1VZ3bXiMpUk+5lrhYD88uhUCegtBmYO0vBBr7oDkZDhx4jXs9kvH7EhfcskDPPfcTq66qmGk7PLLu3j5KSWXzZ2G33v6URIdHZCcnDP5H0MQBEEQBOEkh8PBxjceZrD1YcpyqlhXIZGnhu1Pnf7YziEZR5vlLF713vshvfUbKItJJV/VbmLBwrPLLX+m3C4XrhNPkhWTbikUgtJ515FfPP0DaYMgCIIgfFSJwKggnCM+nw+D1n/aejot+HzxgVGvH/rsYB9W4vLqCYQsoEhBrc/AYMolMTmbjGk28tTxc8J2b9vEitToNXs9kKXxAtG8UbuC+VxWUBx33EBfLzmdm8AECjnMtoFblciSz/+G+vrDpKb+FPPJ6fUFBWE2bvw/Vq78zqh7kclkrFz5J3buvJQFCyLBWIUC5q5u4/CBFArT8zl2rIupU8f/Pf75zzy+/vXbT/u7CYIgCIIgAAwODrLpjYcY7niEaXk1XD5dgpj439Qi+G3vxOeQJGgdUjDLruKhX3+X//rmz9FoNGfVHq/XS7o2fvZLOGHhWZ3rTEmSRNX2R5ibE+0PhiU4PjyDOZUiKCoIgiAIpyMCo4JwjthsNqr3G5nL4IT1OnvlHDmRhlxlQ6lJx2DKxZKUh63ERpbuDIaRAjXP/YZ5quj2xh49NyyKBkVdAche98VRxx1e/ztWmMIj23YfZK25D5lMRnHxDDZtKmHFitqR/bNn11FXd5Di4spR57JYrOj1P6a7+wFST+Y6TUuDJstBplcs5ac/7eNPf6pjrHeNHTvUmM0XY7FYzui+BUEQBEH4zzIwMMCm1/+Aq/vvzCis48qZwMyx68rlMGM2vFEHFxaPXedfVVCwxMfKfD9zgzt58Gff4IFv/Oys2nb0wEbmpEf7VV12KJtz+Vmd60wd2fsalVmdcWUHWy1Urrz6A7m+IAiCIHzUyU9fRRCEyUhKSmLQlUYwNH4dhxuMifNYvvZnLL3wv1m47Bamz1xGTk4OujMMigIYG9+O227yG1HG/FVvHUpixrwlcXXqjh1iFvVxZQflpeQXR/NrzZjxBU6ciJ7IbIa+vj8SCo19cxUVS3n5uSJidy9YGKZfVs9Xv/os99wzlTfeUBM++c7Q3w+/+EUyzz13Df/zP78/k1sWBEEQBOE/RF9vL8889V0e/00hnbuTuHrON7jl0jqml45/TFUdPP5yAQmFX+XJTfDYTgjE9E+8AfjDbmhIhu//DF4KHifTHMToOExnZ+e4552Ip/3NuO26/tQPJJdne2sjGWxFFdP3a+lTUjDnbpRKMf5FEARBECZDBEYF4RxaufqTPPVyEqHw6H2+APzjlVQuWvPJc3KtmmNHWZY4NLLtDsCCvISR7VAYDEvvQiaLjiANh8P0vPEnzDGjN+uHFMy6Jn5FeKvVSlfXxSOBTIB58xzs3v3vMdtSfWgrNy4q5KXn4oO7V1/dTlPT6zz88EEGB//I/fdfyAMPXMAvfvFJ1q7dzE9+8uQHulqrIAiCIAgfbt1dXfz78a/zxG/y6TuQwjVzv8PNa09QPsHC8Ydr4LGXinl23/dJm9fHzV9oQGmHvy6HVBfc/zh87gn49L/V3PQCVNwN//PDyLG33xfgkRP1XFrQy+vP/+OM22u32ylK6oor06avOuPznCmPx8Nw/WMkm6NlTh/4k67EIhZYEgRBEIRJE58SBeEcyssvJLD8Mzy8/u9UFPZSWuAlHIaDx42caE9l3dWfJikp6Zxca//Tv+WTMXHIjR1y1iwyjmy/06dl0SXXxB2z963nmZ8wFFfWnXshRZbRHeh58z7Bnj1bmT/fCURyhyYnv8zw8BrM5mgA1jE8jNH1FtpkGQsz57N/32ZmzY6sRq9SwbRpT1Bfv4zrrruD66674z3ftyAIgiAIHy8d7e1se+v/CA79g3lTW7luwemPOXBMxpHGKZjS72DlRfcyfZ1lZN/Q0BDyrb9BlgMXnfzf35s03PbJcrqG/BzxVAHSSP1bv+Lk2R+3M6jpPuO21+zbwMLk6HZdp5yKle9vYFSSJI5ue4S5Ob648mr7NOYuHye/gCAIgiAIYxKBUUE4x4pLyigq/l+OHT3MturDyGVyyqbNY9UV4yS5Okvyoy9AWnS7PaBHLo+ODvWUXxs3jcrldGKqfg6lJXrM7gE98278xJjnVyqVWCz34HD8CpMpUlZcHGLjxt+ycuU3RurV7HqMuTlBAGxWLbXHKhjIP0xiYmR/djZs2fIA2dkvYzSa3ttNC4IgCILwsdDa0sw7b/8KyfFvFlZ0cP2i0x+z94iMYy1TsWTdxYoL72Lm5dHhkh3tbVQd+DcBx0b6Gw9zQ6ZnZJ8rALkVmQCkJajpqiqiKruO8vLIfp0OVtzbwyN/OvOp9LLBdyAmMNrpLaBYqz3j85yJo/veZEZGe1zZgRYTlSuufV+vKwiCIAgfRyIwKgjvA5lMRnnFDMorZrwv5+/s6GC+LjptKxSGogzbyPbBfgVL7rs37pg96//ECktwZNsdBMOSO1CpVIxnypQ5bNpUwIoV0ZVWKyurOXGiioKCcuqq9lCR3hF3jNo4ly1bUrjyymi+rWXL3Dz77Ge56qq/x03tFwRBEAThP0fjiQZ2bvolMvezLJ7RxSeWnP6YnQflHG+vICn3HlZceBtzjJHZMeFwmKoj+2g6/i+00m6mlwxz4clu12PPdqJOj55jfauCoph0Q5WZJl5+NovU1DaSTwY1MzNhzRWPc/z4A0yZUjmp+2lrbaI80zGyHQhBcuGlkzr2bHW2t5AmbUYd8xbX2q8gb87dE/bpBEEQBEEYmwiMCsJH0OZ//p6ro7Pm2d4FS2ZHO/ytqSuoNBhGtttbmihz7Qd99Jg9viyWzzn98Izp079AU9N/kZcXSThqtcKxYw+SmvpTZP0b0KZG6zb1KildcDOVWh0vvXSQSy/tG9m3Zk0Vb731EKtX33vqJQRBEARB+Ijp6+tj/dN/pb+vnaycUq665lYMMX2Pd9XXH2f35l+g9D7Hkspeblw28XnDYdhxUE59ZyUpBZ9m+dqbWKCPdGA8Hg87tr5IX9tzJBurqCwNUD4//vjDR5xcYvHHlQUrU/lHlYKylDAJJ9MQrS1O4W+/cXPTNwd4N544e3aYF19cis3WRGLi6VMfNR5+jqWZ0e1jbSqmrZt92uPOltfrZeD43ynPjKYBcPnBm3AZ2dbkCY4UBEEQBGE8MkmSTl8rYtIVBUE498LhME8+/Ee2Pvc35G0HMCmDDPpgfirINVruWDkVgKZh0H/uJVJSI/PsJUliy4NfZrkpOsK00wWyK39KWnrmmNc61bZtj7BkSXQEaDAILz6dx1Uxaaz8QagPXMLUyqUAdHS0MDBwLdOmRZeCPXFCRn//r9HrrSQkJJCVlRV3HYfDgdfrxWAwoNfrEQRBEAThwyUQCPDdb9xF2L2ZGy5qITUZTrQq+PebeeSWXMsXv/S/HD9exd6tv0Dtf5Hls/tJPU3MLhSCd/YraOydTVrRZ1h+wSfQnpyO3tvTw6F9z+AbfJO81GbKiyd+JXnkGzXckeAe2X69TUHJL+vZ8cTPOX5kB3MK4cIy0Cih1yHx59Yavv49T9w5Hn64kFtvrZ5wBGY4HObQ83czMz+a53NL6yyWXfaliW/2LEmSxN43/8zcnJa48j0dpcxdecv7ck1BEARB+Iib1HRVERgVhA9YMBgkHA6jUqkmPa08HA7zwG1Xscb9Ghdn+Hj3MEmCLR3wmyoN/7x9KkqFjBe807n8m4+MHHtk52aKq/+MNmbx983K+Sz/5Bcm3eZAIMDBg/cxd270RaOmGjJ92Zh0kRPvbUlm9ur74+5p+/anmTbtfzGb4dAheOklsFhk5OXp6O/X0NSUxtKlN5KXW0Jj7SHMagdadQiHT40vZKasYj4paemj2iMIgiAIwgdPkiS+eN8V3LX2FWaUBUftf+5NBRs2Kvjxl/wkJ058rmAQtu5V0jIwj8wpn2XpimvQaDRIkkR9XTV1Vf9EFdhOecEAGakTnwvAH4A3toXIe/0Q5THXftR0Czd86yEOf2sZc5KCHOyDzd3QiQWNLYXrb6/hyJEj3HhjKO58Dz20hnvueXnc69VU7afA84uRKe1OLwykfY+cvMLTN/YsVB3YSJH6TTQx8/0OthjI4HgIAAEAAElEQVQpX/FlMYVeEARBEMY2qYCLmEovCB+Qurpqjh3Zhko2iEIJXp8Ga1IRcxesRKfTTXjsH3/xA672vcryzPipYTIZLM8Eo8rHLze1c/fiLMqujY5UCAQC+HY+ijbmBeHIoIp599xzRm1XqVQYjXfhcv2Wd2fJlZbBxpf6WFmUSrtdTuGcW0cFehctupZnn91ESsoOqqrgq18FhUIC3IAbSbLz9NM/oWrfNO67upzo4T4CkoO9R17H519Gdk7+GbVXEARBEIRzb/eu7UzP3TJmUBTgytUhdh8KER5nOEUgAFv2qmgbXEhO2edZcsMVqFQq/H4/h/Zvpqt5PRb1IWZO9VI85/TtsQ/BgRojbmkOOSXX0XvsN1yaeGhk/5F+GZd8/Wdsf/lfrEyOtHmmDbKM4Lr5T+TmF7J+/Z0sXRpg06ZjrFgRbfiNN77Cv//9Da677gdjXrun9kVKY7onR9uNLFjw/gRFuzvbSAq8hSZmMk37gJzsmXeJoKggCIIgvEciMCoIH4B3tr6KKrSXS5d4UMqj5b32bjY8f4K1l90xZl4uiIzOOPjGM9xX6h9zP8DsFPhL7TBb3RlcUTZtpHzni4+xNNE7sh0Iga/iutMGYsdSVraATZueZ8WK6BSu6Qs8NFb5cOguJNM6di6u1at/xI9/vIof/jDMqQNkZTK47joXv/v1Ebr780hLjv4GKhksKHKyqWo7aelZouMvCIIgCOfZPx//Cd+/d2jCOndeC4+uhy/fHdn2+WHzbjWdjsXkTfsCy29ch1KpxG63s23Tk7j6XiYz6QSzSsIoJpHhp6EFalvTkOmXM7XyOi64NhKd9Hq99NY/DRnRunuNi7kjNZV9O5+IWzl+tzeDSwuKAFiz5kG2b19DQkIhtbX1lJRE6hiNMG/eD9m2bRZLllwd1wafz0eqpiGuLGRecPrGnwWfz0fPsb9RkRUN2nr84DCuJTM55X25piAIgiD8JxGBUUF4nzU2NiD372PeDM+ofTYrXLKok41vPc26y28b8/jW1lamKLtPe52ZiQE8Uy4b2bb395HVuRFM0Tq7HFYWr1h75jdxUnLi1bS2/prs7Mh2UhIc9vWxdNGqcY/ZsuVlrrtONiooGuu6G908//hB7r1mcVy5TAaFKQ6aTtRSPKX8rNstCIIgCMJ7J4UGMJwmBXhRLrR0witbNPS4l1E4/YusuuUS5HI5TU0NvPHSz5B5tlCa18PK0tNfMxiEw8cVtNuLMKdcSuWcdRQuThhV76W//pxrMgIj2z1umPvZX1FXXcUCY+9IeSgM5iW3jmzrdDoKC/9EIHAz1dWZ2GztWK2Rfbm50Nl5PfX1hygqivZDqg5sYlZGdOp9zxCUzbr89DdzFg5ve4y5WfF9yKN9RcxdufB9uZ4gCIIg/KeRn76KIAjvxdFDW5hT7h53v0kPylAje3ZsoO74Adrb23E4HITDkVXgA4EAGnlo3OPfJZdByfTovLODz/6WfFN4ZNvug8w1n510XtNTBQIBpJ7XaTpkjCtfsiLAgQOvjHvc8eO7qKycuP2pqeDwjj0CJSsxRHdny5j7BEEQBEH44ARDCk63PIHbA829pVx8u5ubPv0yBmMCLz/zJTY9uxyr+wbWzHqaSxb3kDfB6FCHE7bs1fHi9oUc6vs5Fave4bIbn2T5qptISBgdFJUkifDbv4ore82Vz7SZc6h5/ndYtdHy3f1qFlx4ZVzdvLwpdHU9wMqVqaxfbyEYkylgwYIQR44sZmhocKTM1fZG3PG1PTYSk06/iv2ZOnZwKxWpjXFlh1sMVC65+ZxfSxAEQRD+U4kRo4LwPpNJg6hO85dWXhKgb2AHxUmR6e7OPmhtkuHxqnB6FBwZPH0w84DLyvVFkWlhDdVHmE193P6D8lJWFpedUdtDoRAtTU04hu10tBxh9RQ34VAy+/a4mT03EnRVqUCvfxqX64Jx0gGcXSA21uTXiBMEQRAE4f1SOedydh96h/kTfPD850tyFs2U86NvreXiRXYqS4PMnMTgxrYuqDqRTFi9hOKK61h65ZRJf8zd8vKzrEsZGNn2hSD9+u/jcrnIHdwLMTHL/uyVY6bnWbr0kzz77E5uv13iL3+p5t57o6mIrrpqiIceWsiddx7F6XBQmNQZd6wmffyZM2ert6cTq/d1tNZoWaddTvqMO0R6IUEQBEE4h0RgVBDeZ5Pp0ivlcHKAKCoFWE1gNUlAJK/oc1NSaXf2kmkc+/gBL3gSU2mo+icoEnBsfZ1CW3T/iWE5M2/63Bm1+8Ce7bTU7CXfaMei8SMLw8vvQJoNdLpEPJ4+3k1VWl4eZOPGP7By5ZdHnWfatKXs3fsOc+eOvVADQHs7WA3WsfcNKEhLzzmjtguCIAiCcO7dePNnuO/OPzN7Wi3KMd4ihhywdZ+Wh3+h4VeP9FJaEPmAOpZwGKrq5LT05qFLvIgZs6/i4rnJY1c+jeYn/4flMcHPl7rMXHnFjbz1jz9xYVJ09ky7E+bc/Plxz7Nu3c959dV13HhjCf/6VxXXXx8NAN91Vw3f+/YsUrVLMCpBqYZlFeANypi2fPVZtXs8fr+fzkOPMD0n2nZvAAb1F1OWkn5OryUIgiAI/+lEYFQQ3meBkA5JYsIcmy1dkJU6/v77/3s1d11UxV8ukrCdsm7SoA/u2Wnk90+tIi21id3bB1mYGJ+L6rjORF79b2kO6gijB5kZhToRtTYJvTEVk8mC0WgcGYGwc+ubaPp2cEWRN+48FWlwrBva+ox0b5Oz+sKekX3Tph2gtbWB7Oz4FVkvuGAdP/rRY8ye3Yx8nOQd/3rSwC2rZ4wqlySo7zGxZHXJ+D+OIAiCIAgfCL1ezwP/7wlu/NKF/PD+QUpOrsouSbDnMPzuCS0//loBMpmMdSvh1S1w3Zro8R4v7K/WMOCZhi37KiqXrKRCqx37YpNUU3WY1ZrauLLgks9FRpsefBpiPhQfCOezLn38wKJarWbmzIdparqGefOmsG1bNUuWRKatyOXwX185zJt/lLh6RgUOH7x9GLoCCXzqkjNf1HIih955grk5rriyI90FzF215Jxe570aHh6m+ug+/O5+AOQqIyVTZ2Oz2U5zpCAIgiB8eMikyc9RFZNZBeEsHDywE4P0CsU5Y4+YDIbhny+pmF6mQaPyodMGSDCA0RDJGwrw42++xS3Hd/GzVtAbYEVeJEHwi60q2n1afvSXmykpsuLyhGla30q5JfrnuqdfTuWNOeNO5w9L4PSAwwFun5JBp5rOej+Xl40/wvO1WhUFi25Ar/8hmZnRa23ZkszSpb8eNfVt377tbNnyfe67rweNJloeCsGjf9MScldy17qpccHjgAR76w1kTVlOdk7+uG0RBEEQBOGD9b1vfBK99BaNLQ7UKgmfX87MCgufvNKGQa8AIsHSX/4VbrkCDtVbCMgXkF92HVNKpyMf70vpWXjkvlXcoXx7ZHtzp5I5fxvkxPGjFLx6H4aTI1YDITgw/4fMW3nJac+5e/cGioq+TW3tEDZbA4Ux33wbGqDvteXML4wkSd3cqEFTfgsLlq48J/dTc2Q7ubyETh0tO9Kmp2TJl9HEdqLOs5pjh7C3H6Ai24XxZGzbG4DqDh1BTSFz5i8767z2giAIgnCOTOofIjFiVBDeZ9Mq5vDi88cwGZpIS4rPyRUMw6vbLKy48AYysyLTxYPBIC6Xi/bhQdzOHnZteYPE3QfITIVfF0OvD355TMbChXl8dZqRfzRpCIUjf+973uxjRUxQ1B0E/czECXOcymVg1kf+B0G27g6yMHvie1qYE2BPfQ0qwyIyM98ZKV+woI8DB15j1qz4l47ZsxdhMv2C//u/36PTNZGc5GRwQMLea+SiedNJSsnmzUNgMWvRa8I4fBp8ITNlFfNJSRNTxgRBEAThw0Sn0/HlW7MmrOPzQ58jj1Da77hw5vvzb/lAfz+VgxshZgZ+U96VLDcYaHzpQSpiBqNu79exdPlFkzrvvHnreP75HVx22as891waNlsXZnNkX2EhdFZsoblpHbkpJpbl+fjLnjeZv2TFew4E9vV2Y3K+gi4xWtY1KCO1/PYPVVC0va0FT+9+FhbHLy6qVcHMXA+NvbUcO2qivGLWeWqhIAiCIEyeCIwKwvtMqVSy7vJb2LxpA3uPNVGYaUetCtHRZ6R/KJG5C9eSmZkdVz8hIYGEhAQkKYfff+OrfC/RP7I/SQ3zZqRz+bRITs7Plof54RMDrLxsFmW+JtBHr71jSM28gnESk45jeAhseRPXMWvB2zfA4pV3cuDAXmbO9AGgVoNS+Q88nuXodPHTykpKpvLf//17jh58B7VjCykVaiymyBvLsAeUlauwJGXi8/nI1+vR6/WjrisIgiAIwvmXlTuHuqaDFOeNX+ftXQau++RXSZ9g6vp79crv/oebkqMfhGsHYfWPfsmg3U6ptwpiAqPukjVjjlSVJInBwUG6u1pxDNbjdTVDsJsUnZ2n/6Xi+k9k8NBDHu66a2gkJdCSpRL/bn2NJM/lGHVqsjQDdHd3k5aWdtb3EggEaDv4Vypj8or6gtCvXk15WuZZn/f9UF+9n0VF7nH359v8bKyppay88pyODhYEQRCE94MIjArCB0ClUrH6wqvw+Xy0tLTgD/oprUw5bQ6mxsZGCpt3YUmJlr02IOPSZdECjRKsYQfB40dIi1251AWl136HoNFMy7Adt6sHv7ePkN8O4WEUMhcqpRedxo/JIGE2RhZ+gsj0evkEgx4kCSTkaLVa5PKb8Xof5t0UYdOnB9i8+c8sX/7FUce1t9SRrTlIgsU8UuYJQJ98AQV5pQCYTKYJfxNBEARBEM6vdVfczK9//Arf+FT7mDnUPV7YVZXNdz45931rQyAQIOnIo5ARLduunMPtWdm88tefsiZmBk3DEJRcdQPV1Qdx2hvwulog1IVGMYjJ4CYlMUypFThlHciE+lx27mjgzjsLePjhY9xzj29k33Wf9PPnX7zJ3VPXYFQH8Hji87ufqYPbnmJujjOu7HBnHnNXr3hP5z3X/H4/KoZRnWZwbKrJQV9fHykpKRNXFARBEITzTARGBeEDpNFoKC4unnT9Q3t3c605/ou83ZaMWhn/9d0sOSmVdxL7J12bMJ/l2bkAWK1WoGDMa0iShMvlos8xjHOoF4XxMHV9NUyZIGbbOqQgNbsIgOnTV7J160ssW9Y1sn/KlN10dDSTkZE7UtbT1Y566E0SYuKe/hA0e6ZROn32RD+DIAiCIAgfIiaTiXVXf42f/+0H3HlVF0mW6L6WDvjr83l86rM/HXNquSRJ9PX1EQqFSExMRK1Wj6ozGS8/9nsuS48uEmn3Qu713+LY0f2ojq6HmIGq+/1aVgW/TeIYwc+J5GYq+evfM8nNa+P666fw7LNHufrq6IjOO784yN9/sh2z6TIqrGdw4lPUVu2mPPl4XFlVu5aKJbec9TnfL4FAALUydNp6OlUQn8932nqCIAiCcL6JwKggfIh1/eMXZMZMA3tnEC5bkzGqXq/DR/LJxQ4AjgyqmHfPPZO6hkwmw2g0YjQakdLS6a/azZEOKEwC5Rizn8IS7O5K4LIL5o0cX1z8Rbq6vsa7M8jS0mDz5v8jPf0XyGQy7PZ+Ap0vkmmNvkwEJagbyGPqnGWTaqcgCIIgCB8eM2cvJDX9If71zJ9w2KtRyP34Qzoyc+bxwFfvJCEhIa5+OBxm41sv0li/k/TkYdTKEJ19BtT6AtZedgtms3mcK8Wfo7+/n57uFoae/zby6PdXnu/RcUXBP2g47mCpLZqCyBOEklXJJFrO/B4NOtAbjexdb+WSe+xMn17Crl01zJ8f2a9UwpX3NfPL/63nGstZXACwD/SiG9qAPila1jMsI7H0NrRa7fgHnieSJDHkOH3Ac9CjJc94ZumcBEEQBOF8EIFRQfiQ6mhrY2X/XjBEy+oNFhZrFXH1PEFQKNXoTs5pCoTAW3HNqByfk3HgzWeZrWgiOxleOgIXTAFTTJ/c5YeNLZCUmxm3CEB6eg6bN88nLW3XSNn8+d0cOvQ2xUXzGax/lnxb/OiCmu4Ups5bI1YsFQRBEISPqIyMDD7z+e+etp4kSTz52G+ZWXiQVVf5Y/Y4sDu6eOLvLdx4y9ewWCyEQiEGBgbo6W7GOdSA392CLNSDRjVIgsGDLUli+HgHV6UPj5wlGIaUi6ZhNUPnjj7mxAzefKdfwarpEwfo7EPQPSDD4dLjC1mR5Klo9NmYrEWkZB2kv/pNNjzl5qpbobMzn+bmRnJPBmWtVrj5rlfZt+8tZs9edSY/H4FAgKZ9DzMzJ9pH8gehW76CioycMzrXB6G3ux1Xy0to1SG8gchiS2MJSzDoN52csSQIgiAIH24iMCoIH1Kv/+Dz3B4TFD3qgEtWxK8AK0nwYJWSK2dGl2Pd7bCwcPmlZ3y9qp0bKXPtR6WETAPolbDpGAT0FuQ4kSuDaBJgwRro7q4jHA7HJdSfN+8eDh8+wPTpkRcerRYk6QmaDp6gPMsfd61jXQlMmX2lSMgvCIIgCP8Bdu7YRFnWIcqL/KP2WU1w86VtPPzn/2LxbAUJBg+pSRLlycStNh/r+DMHWRiz7+UOBZd+rZCevgAzlPGjGcNFFmQyGBiE7gE5TrceX8iCJE9Da4gEP20p2ZQUW0f1S1wuF6E3f83UZHjpaDabN55g+Uor//63m+Tkbgwn+2lTpsCmTWtpaztOVlbepH+Xg9v/xdwcR1zZoY4s5qw+swDrB6G+eg9J4T3k2SSsRth5HBaXMyrXqCTBnkY9JWXzzk9DBUEQBOEMicCoIJxHXq+X6mMHGB5sRS4LIqFEb0wnI6OAsqMvQMyssqedRm4Oq0kl0uk8NKDgH41arqmwUmyLDOu0+yDj4vvOOODYUHWAjPY30UUHgaKQQ+mSKymeMZfGxioyMp7k3UGiCQleGhoOUFwczQ2q0+kIhW7A73+Md9OFzZzpY8vLR4GSkXp1XToKKq9FpRpnmIEgCIIgCB8rxw5v4s4rxp9+bdJDVqqPoiywJoxbDYDGpmFWqAfjylxTi1Ao5Gx7sZurY3KZHx0Azew7qLFPJTUth9IpljOaqbL7mQdZaQkC8Dmzkg2bs2jMa+G66zL585893HtvdNTqihV+nnxyPlde2Yherz/tuetq9lNmPRZXVt2hYdqS2z9Us2kCgQDHD2ygJKkD9clJSwk6KM+Ftw5CfpqC/JQQMjl0Diho6DFRUDqfzKwP34hXQRAEQRiLGK4lCOeJ3W5n2+ZnyU3az/KZvSyttLOsspfitMM8/v9uZb45mo+z2QNXlmWzpw6+ejCFnw8u4kD2J3hgRRZzc6LTww7KppA/pfyM2tHR0oj+2LNYY4Ki3hA0JS+jeEZkNdm8vKnU1kaHr6pU4HS+PepclZUXs3Nn/KpNRZV9dA1EFpBq7FWRPu26D2XOLEEQBEEQzr1wOIxGOTTm6vWxyougvuX053vjL/vJi/lwvLNbRtqKb3Ks/8vY+r1xdU+YZ7P8ghspLZuB1Wo9o4BjU10N070HR7blMjDbCmlouBePB+64o5C//jV+4ahPfrKHxx5bhiRJE57bbh9A0/88xpi+V+8wWEpuOatUSO+XQfsAjfseZ1pKNCj6rn6XkcWrbkGXeTH7OkrY01aMz7ScJauvJze/6Pw0WBAEQRDOghgxKgjnQTgcZu/u11g+y476lL9CrSpA5YktEDNi4m2njjuSdbicWq56cD1qtZodv/08qdZoB//EsJyZN33+jNox0NeLb/vfyDdGg7CBMBxRT2Pu0otHymQyGXL5YuD1kbLi4kE6O1tIT8+Jq1dQ8AV6e7+J7WR8NCMDNlXVEpbNxlJ0NUZjzFAOQRAEQRD+A0wcKIwVlqB/EHoGFDjdevxhKzJlOhpDDgplGhWOf0DMgMya9DXcvvomtr/+HAtt0VGpwz6YctVnz6q1oVCI9pd/y+KYFJltLhllVz9ASloG69fv5uqrD3LllVN48cUqLrssZqX6O/fx6KN3cdttfx3z3MFgkKa9DzMzJzhSFghBJ8uYnpl/Vu19P7Q2VqMa3kRJWjiu3BuAhsE8SmZfhEqlwmQ2k5Pz4Wm3IAiCIJwpMWJUEM6DtpYm8jOGRwVFATb85Q0uSoh2lgf8MCM/i0AYgpd+Bq1Wy763XmSeeTDuuM7sC7GcQZJ7l9NJ1xt/JN8YjCs/EMxm9sU3jKpfUrKIurpog41G6Oh4ZfR57e0c3RPfjvlL3DS60rBax0kWJgiCIAjCx5JcLscbNHOaQZQcOq7GyTrqh/8HdcaDTF30d+Zf+EeWXvy/LFn1BeYuuJLjb/6LhanRQF3TMCz//K8BGNj8CMqYN5vtjmSmlM84qzbvfv0Z5icMxpU1Ji8nNT0TmUzGmjW/49VX9SQmqigpKWHfvmg9lQouvfQRXnnlwTHPfXD708zIjj/3wfZ0KuZcdFZtPddCoRDVB94gMfA2aQnxQdFeh5xOFlM+91KREkkQBEH42BCBUUE4D1pajpObGRhVHgqFkb0aP0X9JbuaWWkm3gwks+zqm3C7XOirn0UVM6Vpz4CeeWtvnPT1/X4/tS8+yFRT/JSzvc5EZl5215g5SlUqFU5nRVxZdnYLw8PR/FqNxw+QrT3M/IISqo5Gz6HTgVb3In7/6EUXBEEQBEH4eJsydRlH6safqOb2gCdUzMoLb6RkSjkJCQnIZDLC4TB1tdW89MKjvLD+ITQ74oONm8LTyC8sprW5kbnqtrh96rmfOKu2DtrtJNdviAuy7hnQs+DK20e2dTodpaUPc/w4TJmiZ3g4l/b2aP3kZMjN/RyHDm2NO3dD7UGmJBxBHjOjv6ZDzbTFd34o8oq63S5q9vyDEksthvgsATT0qlGkX0N+ceV5aZsgCIIgvF9EYFQQzgNJCo5axRPgjad3cJkxGqz0hCArMwN7ALhgBfW1u3jnXw9SbomO8vQEQb/49kl/uQ+FQhx6/iFmmobiyo849JRfcd+E5ykqupjOzmjDU1KgoeFVANpbakkKb0evAr1Wgbszh0BM7Hf2bC+7dv19Um0UBEEQBOHjY/GSVeyrnUZdy+jgqNMDj25I5/KrPxVf7nTy7NN/wjvwby5acBxV77NclhWdKu/0Q8ltPwHg4DO/IzVmev2+PiWzVl/FwQM72LppPVs3r2fHO68z0N9/2rYeePrXFCeERrYdfjCtuHdU/ygvr4T9+y/H4YCVK5PYvDkFjye6f+pUiZ6ei3jphX/x0rNP8OLTj9FT80xcXtF+J5gKb0Y3icWa3m89na30VT9Oedogipg+akCCo102sipuITE55fw1UBAEQRDeJyIwKgjngV5vYdgVXyZJEgP/eAlVzF/lC30KVuRa2aJNYs1FZozhrVT4DsYdt8uTQfncxZO6riRJ7H/lCWZpO+LK6x1Ksi+577QJ/00mEx0duXFlZnMVne1NqIfewhxz+PT8DLZtiy4M5fFAX98m/va3n7F+/cO0tDRPqs2CIAiCIHy0yeVybr3jv6jtvoS/PpfF27uMbN2n48lXbDy/dQ433Px1kpKSRuqHw2Feffkx1ixso6LIh0oOA2+8Ezdb5pkOEwsvWIPP5yOte1vc9RqM0zm090WyrftZOqODpdM7qCyqo7n2Bfbs3Dju4kg1h/Ywh/q4sr3hIkor545Z//rrv8HTT0eSwt94YyaPPmqM23/hhV56u+/iAuthLkmrQRcI88xW6B+O5HRvDSwiM6dw0r/j+0GSJOqqdqKyv0BOUnx6pWEPNDpnUD7/OjRi4UxBEAThY0p2ulUTY0w+a7ogCBNyOp0cPfAsC6Y5Rsq2v32Uij/9EdPJwRQhCV6SMqnISuXlnErMagVOuweLMsyyTMg0QqcbBiorUerTkKlysCaXkZxsG3c61sFNGygb3oEmJvja7pajWHwPaZk5Yx5zqq6udgyGBzHFrKG0440EFhZHV60PSnC8vwCjrQCD4XscOABdXbBkCWRlRYKkO3aYaG3N5Prrv4jZbB7jSuPz+/20NDcwPNCFTBYCmZqM7GJSUtM+FFPRBEEQBEEYWygUoqOjg2AwSEpKCgaDYVSd2poq/INPM60okoLnwL4Wcp95nMSTsbmwBL/RXUjlhZ+ks6aaG71vjhzb64HXMi9jTqUBhRyQyVAq5MjkMhRy6B1Q4Q6XUlpWiUKhGPkfQNVD9zMv0T1yrvphBUk3/R/WCXK479z5Av39P+TSS4P4/WGefLKK22+PT5f0x59l8qnFtyKTyfAF4cUaSM+0sWjNF89rv8Xv91O7fwMlts5Rq8632RUoUi4m/UO0IJQgCIIgnKFJ/SMrVqUXhPPAaDSi0ubT2FFDfkak01//52dZFPMX+XKfnLXzU/i708w92d5IhzUjMqXrjVawDoI8I4nlU/TAMHAUb+AoTdVKvMFktIZi0jKKR0aB1ux7hyL7DjQxM8H6vOCfcQP5kwyKAqSlZXLgQCIzZw5E7yfFiSQZeLdvX9OdytR5FyOXy/nLX9IoL+/illui51Cp4OKLHQwP1/DEEz/hzju/hUajYTLsA33UVe+h0OakKDvyvSYgQVtPP3ubEqmcvUgsCCAIgiAIH1IKhYLs7OwJ69TW7uHiBdG85AeffIuZCdH9r3couOPns9h5qA5L6zawRfftdum4+YoAMDjmudOSIBzqJOTbSCgEwRD4w7B/Sz8XxQRFQ2GoM5iQGn9Nd4McSZIRlmSEwwpAjkSkTBOWo5Dnc+hQHTNmyLn00im88koVa9ZE+iguFwS07dzws1+TmaojGJCjDNmoXPJ5Fp/HoKjd3kff8eeZluYdta+6y0T2tKswGk1jHCkIgiAIHy8iMCoI58msOUs4fFDFloMNBOyHuTjYAzFf613GZA445NywJDXuK75JDVcXwoYmyCyIX+Vdq4L89CDQBXQx0LuVtkE9vb1aSuxHMcbMgnIGoC9vDaVTpp1x243GVQQC/+bd+OOUshBNB7zkp2qp6kxgypwrkMvl+P1+FAqJhQvHPo/ZDKtXt7Jz59ssX77mtNf1er3UV+9mVp4TZcy7hEoG+ckBEj09VB3eQ+XsRWd8T4IgCIIgfDjICIykFmrvGGaR1Bm3v6+4ggSTgo6OQa6MWUgyFAbznIlHOKrkjEom1tMXpMzjgJiZ8DvtSi662YJCFj+9fCx7qpLx+1309XVgs6nJzi7h8OHjpKfDl74E998Pn/+8B4gkIe3r6+M73/4atpcTWbv2htOe/1xrOVGF1rmF4rT4Vec9ATgxXMCUOReiVIrXREEQBOE/g8gxKgjniUwmY8bMBSxccj21j7xKasyAyY0DcOmUDIZsSRg1ijGPvyQH9mzvmvAaiSYwaYfI7T9KckxQ1B+GasNsSucsOau25+WVU30s2mFWq2FQNkxtl57CmdeOjNjcv3878+ZNvNBBUVGIEyd2Tuq6TSeOU5IWHxSNlaCTUIT7cbvdY1cQBEEQBOHDT6YhcDIe+ebDbzLFEt11sA/W3LEctw9kDXVYY/o3u/vkLFg68WjUU0kSHHu9m+yYoOiAFzKWJMctQjSRytIEFHILO3aYCYVg2jQD3d05fPWr8ItfwKxZ8fWTk+G3vxvi9de/Qmtr6xm1970IBoNU7X8VW2gTKeb4oGiPQ06PfBnls9eIoKggCILwH0X8qycI51lnexsXOg5DzIKkrcpEvE4VFy1IHvc4pRxU3hAHTkxHHm7HpBsi3RZEp47WGXKEcOzrozhmJlRIgkMhLVPKO6k/8jBB0jBaSklNyxl3Crrb7aah9hhetwOtwUzQeQKlpAOiOVILS4MMDq5AG5Ocv6+vjSlTJh5pIZOBUumbsM5IO4Z7SDjNrP+cRA/tLScoLj3zkbCCIAiCIJx/pVMXUtXQREm2k7yOWkiP7jtgyKEyycBrWyVmKQfijjuhz0JTp0KjkkAmIZeDDAmFAuQnt+VyUMhBoYj8r77ayQJTfE7QQzI9K/Mnv9iQSgH+YTNr12awYYOHK64IkJVloKBAhs029jINMhl8+cutPPzw9/n2t/88+R/nLLmcTlqOrqcsdRj5KQHfuh4NyUVXkJJoG/tgQRCED0g4HMbtduH3e5EBOp0R7WkWCBaE90oERgXhPHvr+5/jjpig6IFhWFacyb6k1MiiARPQycMkmYdJMCfh9tqoapGhlPnRqvrRKe0MH+yjIiG+Q77fpWLWxYkoALPeCzQRoomeJjlDbjMKdS7JaVOxWKyEQiH27tiM5GynyOLAqAGHC+oHQKY00tjoIP/kjDWzGerrN5GTE53Cptcn4HDABGsWAJzM13V6MsKnraNRgd89Ol+WIAiCIAgfDRqNjh/9ajPDLQcoCocxKmB2CnS6YOEdF9Jrl9FwsJ+Lk6N9nDYnrPr0gzQ1VVGSezwufdCpNu6GJbPA5Q1iONGKNjG67+iAnKwL5tHSpyQUChMOhwlLYZo6jGRnFyCFg4SlIOGwH6QgkhQiHPKj0gY4fOhVli3LZdeuBrZu7efWWydeuzYrC3p69rzXn+u0utqbCXS/QllaKK48EIbanlSKZ12OWq0e5+j3nyRJYvFMQRBwOh04HXb02gBGTRhJArfTyeCQksTE1PP6nBI+3kRgVBDOo/6+PmbUvgIxIzoPBU1oFRkYkmzAxCMpB4NyMlOVKOSQYAiTngStPRokxQK6dzzH3IT4DvCBISUzLrJxahhSAaQnh0lnEBjE4ztE0zEVNXUqKlO8pGdGA5I6FaQYoX1IxrEaHfn5npF9qakNuFyukRVmZ81ayhtvvElOTt+499DbCwkJxRPeJ4Df58PtcSNJMFHf2eGRodef2Sr3giAIgiCcf+FwmO/efw+ymlf5dmYHOQvA6YcnauGPR2BGsYWZngLqqjIpcu+Iywl6IJzPZenpGIxG9uzsYsmsoZE8pbEO10J2OqiUcOjNBpYnRvtK/hB4inPQyYJ4fQqyMwzoNJGTOHxJlJaPkzT9pB07ZFitL2IwZNLX14TROGH1CMlJddUBikqmnfPFIyVJov7YDlLkB0hLjN836IHe8Eymzl94XoKSPV2dtDYfRx52g0wiKKmxJGWQl18iFtEUhP9ALpcTj7uPVGswbhlxjSlIQArS29uOyZyMSqWKm6EoCOeCyDEqCOfRyz/+CrNM0dEEDW4ozc9myqe+Q31XgPAEAw0GfaC0WmlqdxOIGUiZlRKgcduzzDXGTy87NqxBXbGaho4kWnsUccecSqcBkz5Aus5NunHsipkJoPGa6e2NKcuUqKt7Y2TbYrEQDBbR3j72oyYchg0bbCxffsX4jQHsAz301r9MhjVA7/CEVWmzG8jMzpu4kiAIgiAIHzo/+PJnWNXzBN8p7SDn5Edjoxo+NQ1+uBA2NGjImXIzeTmlLLYOjhwXCEHaqnsAMJlMVMy8mM17k2hoUxGUQAJ67DK2HjQj089HUs9kxz4/Zb74POg7HVrmLMqgMCtMSY4Hp7Of6oZBWrv9+LwD9HRPnA802VzK4QMypk0zolKlsH//xPcbDAJhPdkpfTTUHz3DX2tiPp+PY7ueIU93gIRTZqG2DCjwJlxGcfmi8xIUra05wlDnLqZn9TAz18nMHBdzc+1YOcb+PZvx+/0feJsEQTi/HMMDJJnjg6IAbn+YI0c7eGfry7y24Y+8+OxvWf/0I7Q0N56XdgofT2LEqCCcJx6Ph8ztj4MlWrbFpcc65QJM215knTXMv47DDVNGj5D0huDRJiM33jMVW2KAps4hkqxGTHoF+zbVsMg0GFe/0akk9cJPk2RLASLJ93t7Oxnqr0ERbiPZ4sZqir9GXQPMPE2qqdlZCvYdM2NbHo1W6vUHCQQuHfnaf801n+Kxx5xMnVrPnDnekZXs29rglVdSWL78bqzjzLWXJInWE4excJxMa2TK1756MBlAN8bTq92uQp+QKaZZCIIgCMJHTG9vL94jr7CsbOzZMil6uH/KILu3bULV8BYVMQOGtvfrWLrswpHt5GQbF1x4PS3NjeyqqiUshbFYU5i3aDoajYZwOEzX6/8gxRI9R6cLii8sjXspt1nAZgngDw7hdcvp73iTgb5s8ouWotHErJoJ9HZ3oj36LL0BM8wc4hvfmM7ddzeyevX46X3Wr1exdvUVGHWgUQ7hcDgwmUzj1p8se38v/Q3PU54W/1uGJajuSiBv+pUYDJMZznru9XR1IvM0UJw6OviZbJTQqgaoPrqXGbMWnYfWCYJwPng8HjSqwKhRew5PiG9952ccPfgCBq2fQFCGSpPK5ZcuZvuWRhrS57Fy9brz0mbh40UERgXhPHnhV9/lBkt0YaIeHyRk5KJMymCF5ygKAwQk+MshqEiFqYkQAvbaVRx1GLjsE3OwJUbeCvLSw/QPDbNjbx+VoW5UMXPluzwy1AtvGwmKAiiVStLTs0lPj6zc6vF4aOyoxeuqQ6fsI80WIhgA7WmeEAYNuDqzcLuPoT+ZJ7WoKMDx47spK1sMgFqt5o47vkpV1SGeeuo1ZDI34bCMlJSpfOITa8d9AfB6vbTXbSYncQjVybcUlRxmFMDBBkgyK8m1BVErYNgDzf16VMZMSkunn8H/C4IgCIIgfBg89dBvuTV14hGZF6X7uO8ff+K/KnwQExh1l6xFLo9/pZbL5eTlF5KXXzjqPPveeoEFpvjRorvDaZQHjfiDYdSn9H/USijOCQNuegaPc/xQIypDJaVT5yCTyXC5XPS9/RBlphC2oJWjh4eZNl3BqlXl/PKXh/iv/xq9EOWxY/CPp3SUT93H1KnFZGSk0dLVhMlUMfEPdRpN9UcweLZRlBI/48cdgCZnCaXzLkChmFxu9/dDa/NxpmeNPyLUqAH8A3i9XjFdVhD+QwQCAdTq+GeWNxjkyitWs3ZxN9/9dQjzyVfGPYeH+OEfmsnIXcAFK0Ps35/KrFlzz0OrhY8TERgVhPMgGAyifuHXEJPv6ZVBDcFZi7jJdZR3+6tTjaBVyHgncS5HPMPIZQpsxflcVW7AaoofgTDQOUC5rx1dTFomux9cU6+hMLcAiOTuGhocYGioHwkJrdZAcnIaOp2O/MIZwAwkSaKvrxen9yXCknvUyqWxAmEwGS3U1iZQWTkERFZ79fu3IknR6VlyuZyKiplUVMyc1O/T19NJoH8HhUmjXyS6hrRMm7OCQCBAbUs9wWAQg8FMyYxi0YEWBOGsBQIBXE4nLrcTuVyB1ZoonimC8AFqO1FLQcLEdeQy8PW1UGKJfuxtGJKx4K5PT/o6juFhTDXrUcVca/+Alpzl1+IO9NPaM4jf58ZmDZBsGX18igVSLH58wd3UHtxHUFGGp2o3c0yR0ZlaJQweMcJ0B7ffPoXf/z7EjTfWcPXVPioqJAYHYf16NUqlgSefykUm6+In//sYn7r1XkLB5Anb7vF46OvtIBgKIEOG1ZqCOcGCTCaL9IsOv0mB+QS6U745dw/L8ZmWMXVm+aR/p/eLLOwe+eA9nvQEN709XWTn5H0gbRIE4fySy+WEA/Flt958I9//XAeLZsWXz50Oz/zOxy3/vZMjR5IYdr/BzJlzxAJuwnsiAqOCcB68+NBvuNwand7kDIIzOY/rzW60iuhDvccP/ks/xy2zF4yUNTYeJ9nYQiCoorXbSXaqRGurg4TmVswxOaQ8QehIX015eSQY6XI56eg4gdXoIyslhFIGTu8gbS196PQpJCWnIJfLUSgUhHxekvHSaofcU5L1x2qyq8gpmIrbayMYfB7lySfKlCkOWlvryck5/aJKscLhMM31B7CpGkg+5eXIE4ROVxbZpXNHpuknJiad0fkFQRBO5XQ6aW6sxu93IpOBViPHYtbQ3tpOWNKSk1syasqsIAjnXlJqOt0dkD3BTHJJgqB7CIgGRo+pS7kscYLOyin2Pv0bViZEP7y6g6BZfCflMxfi8Xhoba7HL3PSMaSk2zGMVn6CnDR/3GwcAI0SSvJC7HlrM/NM8VPWNeFMqqvrKSsLct99U2lqUmE297NpkweTSclXv2olMTH6GvbZz/fzxKOvcsnaL47Z5lAoRHvbCWTSMLbEAFpl5OP04PAw9b1akpMz6Tq+gfI0x6hj67p1JJdcQar1/PaZAoEAnW21hIKu09aVyyP3LAjCfwaNRoPdqcKki0RHe3oH0CtqRgVF36VQwE+/7ONT39tJbl4xzU1N5OXnf4AtFj5uRGBUED5gkiTh/Ns3UcT0T1/oV5I/rxCbNhoUdQShZd4nmBMTFAVIT8+lsa6H0nwvBr2ZA1V9JDU3khKTKioQhoMkkpeTA0SmpXd11JGX7otbodWoBWO6j87+Ntqa+lBrNfQ0t5DnrWNmEmzsgIwERr0MAPhC0ORKYFVOLpKUQ23tK5SVRaZGabXQ1/fqGQVGPW43nQ2byUl0oDzlg1/vsJyQeTYFZeIfPEEQzl4gEKC/v59QKITJZKK3uxVCPRRlBdGcHG0/7IbWrgDpNi16fYjGE1UUFlWIVZIF4X12/d1f4NHP/JOvmzrHrbOrR86ivGjk1BOE3DX3TfoadccOMTNUHfcGtNufy4q5kfQ/Op2OktL4qezh8Eo6OxoZ7N1NetIAiTGB20O7h5mpjg+K1g3L0ExbQk+PjbKyrdTVeVmwQOLiiy3EJZaPkZgIg45WUlJzxtzf0d6ERT+A2RBdlVMlB5slhM/djrNxG2Vp8dNQ/SGo68ugeOal5zX3eiAQoLOlGoW3nixLkO5JHGN3q0lOmXywWxCEjzaVSoVCqcftH0Kvht8/+EfuvGbsfNPvykoHvWoQl8tBXe1RERgV3hMRGBWED9iGx//KNRb3yHYgDE2GLL6Wbxkp84fgYN5Kll542ajjtVotyWkl1DbXYrMMoWusJcccv3z9Ab+RBRdl4/Pvo6G2C5UmhcyU+KBorPQkibpWD+76KsrldtQnB0fNSYLNdTA9i7jAa5cDDnTrWbx6zUhOL59vNrBjpE5+fhd2ex9W68TTwgB6OltgaDcFSfGd+rAEzQN6UgtWoD9PiwQIgvDh0t7eSl3tQULBIKlpeUwpnTYStOzr66O2ei+hkBOQodUlUzp1Flqtltqaw/i8PdgsLpTKMK0NKoadUFqoRaOKdofMephaIHG8yUuWRk9ump+2tkby80vO0x0Lwn+G/Px8DjsSqLN3UjzGmozeIHx3v4bFM2y83QrLMmHbgJnVcxZO6vzBYJC+1/9AcUy8rckhp+L6ByY8Ti6Xk5lVSGZWIU6nk/1Vb5Cg7yLgdFLodhL7zaTLA/oZSRRnHKOxI8zx4zK6u4Pk5ITHv8BJJlMQr9dFQkL8lBm/348UGo4LigJISNQebyNd14P5lBii3QXN7hLKZ604bx91AoEA7U1H0QQbyEkIw8lZTRYD9DkgeZyRwUEJBr0GisdZmFMQhI8nizWJ/r4AwZCXvv4O0k6zCDCAThsmEJQYtWqTIJwhERgVhA9Yx28eQB/zoN/QJ+eqVZUjK8+HJdiaMI0LPnHXuOew2VJRKtWc2PA7Zlvj83DucWiZeUkBMkCrhsK0dupbewgak2GczrHT5Sd44jjlxvhk+AkaSDUl0K4qZH/DEQy6AGEgOQNyLBbMZvNI3SlTVtHauovs7Ejn32qF/ftfwWq9Zdz7CAaDtNbvJVXbgt4cv8/tg25fLjlT55zXRQIEQTh/Gurr2LPrNQJ+D2qtmWDAS1G2k9mFbpQKaOs+yEvPbaZ46nLcbgfKYD0zp3hGci0Pu7s4vLcJT9DM7KkhrKZocCI9KUBQgiM1IaQsA4kJ0S6RDMjPkmju8FGSpyPoGyIQCIhRo4LwPnK5XNwUOsHP3oGl+XDdlEi+TkmKzGB55LiW31yVR2Gygp1d8N3dMH31xZPOK7fr5adYaI1ONQ9L0J59EYttk3j7PsloNDJr/lU01lWTUP04Jn10nyMAw1kWSjIiozPzM+Rs3Z+MKdFNb68MkMY+6UkBn5yQ+xiBgC3uWdPf301iQvzIKa8/REN1LSVpo/N1Nvcp0KWUMyXbQldnC2npOR/os8vn89HRfBh9uJk88+iAcF4K7K+P9FGNp2QpCUpwpEVPQVHlB9NYQRA+NBQKBcm2dNwuJ0kpZdS3vE7JaQaBOlwKlCoTycmTf44LwlhEYFQQPkAvPPF3rk2Iz/90VJPBVcnRnvVmWSbL7/nKhB39YDBI/RuPMtcavwDTgUENpopSTu18F2UH6B3swuGykp4cP/Kyq2uIQO0JyozxnVdPEI4GU5h+weVoNBpqE/yUlBwd2V9XZ4+rr9Pp6O0tJjv7+EhZcnLduKuKOp0Oehs3k5s4eoGnriE5isQF5OdnjfsbCILw8TU8PMw/n/g1RZltXLnUhVYNfYOwabeSllYtc6Ylo5BBcU6Qouxe3tq9AY3axNI58S//Zj0srnSy56gHr9cEpvj9ShlUlIY5cMxDYkX88CWNMprjTq8N4/f7RWBUEN5Hz3zrc9ya6OcyK2y1w1fegGalmQxDmKWFFv5yUzIaZWRY0KJ0mJ4M/3vwAFcFgyiVE7/S9Pf2ktH6OvKYP/PddiPzPvmJM27n8KCd0N5/kB5zrkAYDoQMLCzRx9WdWZpPu7OXffvUXHTR+NNCvV4gnEyGTaK1/TDZebOj5w540cRcq9/uZrCjlvL0+BycIQlquvQUlE5Hp40EZy0mNz09nSQkJKLX60dm+bwfvB4Pnc2HMMpayTeNHQT2h6B9UEdW4TTqezuR+QdIS3Ajl8OgW82g10hB0QySziBYLQjCx4dcLsdoMvPf/+8H3H3jX1i7fPycxMfqwBOwkZ6RR0lJxbj1BGEyxKBjQfiASJJE46++QFJMmqfX+2XcvnLeyPY7vgQWfO67E3bwJUli/0uPMVvXE1de61CTt/azmC02Ovu0DJ/y74jNImHRD9DQ0kcgHOmw1td0ojlRT7YhPija75XRlVxIxpSpDA31A2Aw5BKbBz8hwUMgEL98YG7uGuwx8dKcnBC1tRtH3UNn+wk87a+RnxQfFA1I0NBvIiHvUmypIigqCP+JAoEAT/z9p9yw+jgr50WCogDJFrj2oiAVxU6ef7V/pL5MBqvmeekbGBp3PFbl1BB1J9xj7lPKINEcon8oOGqfTH7yM5MM3O6xjxcE4b3rbG9n+u5Hgcjf9LJEmJ6dwy0XzeKPN5Rw05yUkaDou4wquMTUwraNb572/Ief+RX5MSPGB32QdOFnzvhjh8/n48Qrf6TIFP+82OGwMHdFEZ19JqqbFAw6T7ZRr6S7NZmCAhM7doz/wfuxv5tYd9FqAFKtA/T2tI7sUyk0vNvdamzqQRqoptAWHxR1+WB/azKlM2aPBEUhkks+FHAQDnTT293K8HD8R+1zwe1201j9Du62DeSbW7CNERT1BqGx38CQejF509aRmZ1P5axFTKlcjd8wD5d6Nsl5y5m7cLUIigqCgNFoJC33Yp58cexwlcsN9/9Iw9IVF5NXUIHBYPiAWyh83IgRo4LwAXn24T9ypWk4rmyPPI2LEiKjKQ96NEz9/A/Q6XRjHT7iwJvPMVNWHxdQbHUpsa68F2tiEhrtHLxDOwmhor3XSaYt2kHVqaEww01DqxdXu5spSgenLrbc5FJgKJ9GfnIC7X0gw0cgECA5OR27HZJPpgy1WqG/v4e0tMyRY5OSbOzfn4rVGk2tr1TuIRS6CIVCQSAQoKVuJ5nGTrSn5JZy+KAvWEx++Yz3dUSDIAgfHi0tLfz1z99joOcIbtcgXb0esrOzyEyFPz2u5KLlScyYGj8CqzQfDtd4GHaGMBsjaTZkMshKC9LW5Sc7bfQiIyo5KJQhAqGxF5NLskr0DwVJSojvFknhyLR6t0+GxjDxNFhBEM7eK/99E3fGBC7bvNBSdgGfTD084XGLbH5++eYLrLjwknHrVO15h3mq5riyA/JSVpZXnlEbw+Ewh1/4C3NNzrjy/Q4LC6+/n76eFlTqA5Slaxl2hahpcqNR+6goySMr2MdrrwVpanJw2WUhjCcn73R2wuOPGkhJmkdqWmqkUArTVLudo3sklLIgYUmGPyzDZAxQmeVEG/9IpHNQhlOVS3ZhOopTZhvJAIUijFkXxqzzY3cOMDQECQnvPX+n0+mkt2U/FlU3+QljPx89QegaMmFKm0l+Ttqo/VqtluycvPfcFkEQPn5+/btnuOu21Wzes40HbvNRWgg+HzzzGry+DUoKdCyea6Vi+pzz3VThY0AERgXhAxAIBGj+4/9wTUq0bNcg3Lk6smBAnUdJ6u3fxmqNz54vSRKtLc3093Sh1mgJDPdS6twblyq01yNDmnMjtrR0APR6Iz7fdNShQ+gTzTS0ucjJCI4svOR0hwk0DTDdGD/aICxBjVtH/vwZ6LRq/CGQy0GjChEIBNDr9bS1qUlOjuQhVanA4WiKC4wCJCZehNf7GO/Oni8u9tHQsJ+0tGIGmrdQmBQ//R+gw65Ek7KQfFv6mf60giB8RP3zyT+yd8v3uf/mDjJPvi87XfD39e2091r40v25PP+ml8PVCdwS+/AEFs8Osn2/g0uWWUbKUhLDDA4FxwyMAqjVEAiGUSlGf3iRJEal9PAEQKlSMuwGpUKBSiGm0QvC++Hovt1c1LkZYrLuvJa2DIvFjOE0f3YKOcjD/nH3+3w+fO/8FUNM96pmSMmc2754xu3c//rTzNR2xJXVODSUXPZpVCoV6ZmF+LyZNDTvIDOpl9JCE0HJREenl+raZD7zGaipsfDQQ314vUFAg9mcwNWXzKMwx4zL20xVjZKmJhlzMwKkZMfcRwgOd0JTN5TGTKg53qUiJbcEx6COJMs4r3UxMUurMUzP4BABvfGsU4M4hofpa91HkraXmHVD47h90O20YMmcSX6OGAEqCMLZ+fNfX6P66DZ+9vNv0Na8k4qSIOtWwiM/gRfeHiLg7Wfv7k0sWTb+xzFBmAwRGBWE99Hx48d55Mffpn3/NvT2Qb5mhzuyoMQAW8M2vmzW0umTwVX3k56TG3dsXc0xju7YSK5ygFSVF28IGu3Qq4AVmZERUI4A2IvXUVJYGnes1ZpCZ0ceycYmCnJMtHZ6sJi8uB0BAg1DlBrjv+x7g1AdSqRi2VSUskjQYGAIrGYV/mA0WhAIWIHoaNBQqHPUPefmTuHIESPTp0dGVKhU4Bh+g2RZE3lJ8dcNhKHFbiWreCmaMfKQCoLw8bRn93bq9n+bn305PiWI0QCfvTnMW9vtPPSEii/clckLbw6xdbeOpfOiw8xTEsE+GD+V1eMFjWb8hdq8HlCpxh6N3tEjJzcrGiQISHCiVUaKTUN3vwK9zojeaBzzWEEQ3pu9X7+J22O6AAcdMtY+9CQvPPVXBjyQOEH3wB8C1ONPody1/i8sS4x+kA2EYLj0SkrN5nGPGUvV7s2Uew8Rm+mozaUgaeXdGI3RZ5NGq6Vwykp6ulroH95LZnKQnAwtZuNsmptfo7RUS+nJyObmzVqWL0+jal+kn2XQwkBfkOW5oxcl0ihgbhbsaYW+BDDpoa7XRFpuEX3DcgwGCdWpX3eIPMtOzZxm0Adwu51nPGp0aNDOQPs+kvUD5I9zqNMHve5EEjNmkZ+fOHYlQRCESVIoFGTnlPDwQ39lw8svsyTvfiwnH9+XLJX46WMHWLCoEBCBUeG9EfNVBeF98pvvfZ1/37KMr7T+k8cy2/nTNPhSPvyjA75dCzdcsIjBAHQvuY3iiplxx9ZWHaFtxwtcmdzBLKuXTCMUJsC6PKhIgg1NkdFMjclLKKlcMOb10zOK6RpIRgbkpOtoORFE0zxI9inTQfu9cExuJqssh3A40qm2O0GS5GhVMrw+xcioAoUifkSnSjU6V5VMJkOhWEI4Jm1paZkLrzd+6tmwR0anr4yCaatFUFQQ/sM8+vB3+fIdPePuX7VIorpukGBQYt0FIbbsGojbP+gAoz6+C1PXpCQ/65RowkmeACiUSsaKi3r94PIoMOoUBCXoHogk9JcrdAQDMvQ6OWqtWSy8JAjvg43PPsU14fq4skNzbyU9M5O1N9zOv5sm7h+81a1n+eVjL6DU2dpCsX17XNlORxJzVl1xRm1sqasmteV1dDFBUbsPAjOuw5aWMeYxKWk52LLW0dCVjtsHFrOWpvrUuDpFRV76+4P4w5FFmYbdoJVGB0VjVaTD0UY43JWDIakECTl5WWCzgMMTGlV/cAjMpvhxMGoV+P2jZ++Mxz7QS+PRN1Da3yDfOoBpjPYNe6DRbiOcdDH55atJsIqgqCAI54ZOn4gvCOvWruWlTdHnmUYNRmUNSP14vZN/pgnCWERgVBDeB+sf/zvmVx/kG8k9cYstJavhW8WQooFdzT1UTbmEyhUXxh0bDoep2r2RFckOxlqYPk0PpRZ4y5nF9KVrJmxHWuY0Wro1VO1po9hvxzoqn6iMcJGFWTM1SKEOTjT309obmVavUUdGksoUmpGAgMmUR+x6SwkJfny+0auslpQsoL4++g+XwQCdruj0s1a7ipB1BTmFFcjGuklBED62gsEgilAd2gle/gFWzvezY58LuRzMhgBuT/Rryzv7lSyYFR3x1dypxBs0Mta6dQEJtu3TYk6wcGrYwOGG/dVGjAn5VJ2A+pZIvtKpRZCWBOnJICNIsm10bjxBEN6bUChE368/S2zc7vUhDdd+//cABL0uenu91I6zXlCnC/ZIJcyeN/oDsSRJ1D33K9JjBpP2uCHvsi+cUR7zvt5u2PcPkmPis94QtKWtIL904lWQ1Wo1hSVLcbGY1m4V00tm0NYW3Z+ZCUeP9mO0BGjqVNDaDnmWidujVYIkN1M57xIsCTJsCaCSgVoJHk+0gxYAegfBH5Rj0p1yvxLIOH3fq7+3i8Yjr6Id3kh+oh3DGM9su0tG42Aq8tQ15JevxGxOOO15BUEQzoRao8EbiLyLttpnx+1bOsvJYH87u3e8dT6aJnyMiMCoILwPXnnkd9yWMDju/vty4OmjbSy+5pZR+xpqayhR28cMir6rxAph+ekzYfh8Xlx1JyhXuomdYRqWoMqpIHV2IrakyD80KRaJ3JRefK52EowSKlWYfrsciyV55LikpJS4VecTE6GvL346vSRJdLXVYu+K7xznFLjpdwRoGLCRWnwp1kSRc0oQ/hN5PB5MhsBp6yVZJIYckenyeh34InNC6ewFh1uNLVFJIAj7j8HOoynMmnMZm/ZaaO2WE5QiU2brW+Gt7TCt8hKS0uZz4LiNfcfgSD3srYKWTsjIymVqeSWJFiWluZBijaQq8fgibTTqJDESQRDeB+v/7wdcbYh2KoJhcF7/LQwGA4FAgOM/+xxfzYGXq+GRI5EZLgAOPzzVauFv7nl86Ye/GfMD6/7Nr7DAGD8q/ZhxDtn5RZNun8ftpvvNP5NjjKbtCEtwRFlGxeILJzgyns2WSVreOuzeYmqr4/s+BQUeEhKC9A/pae9JQjmJb8VKRWQmTyCcHFdu1Ido6grT3gs9vaDVgk4zelEkp1uOwTh+KoHennYaj7yMwbOF/KRhdGOkbR5wyWgcykSTuZb8qcvj0gkIgiCcawqVlSBwzQ3fp7ohWj6nAo4e2YnXMfFCfYJwOiLHqCCcY83NzRS7W5FNMBpKJoMZugDt7e1kZsYvXtTd3kK5dvyFBAAUMlCEJn5R725vwX/kZcoM8WOkvEFokJuwlCYxMOwh0xYdhaXTQEHmMM0tHlJTc1EpAyhjhmCpVCqGhnSkpHiAyOJMbnczkAdEFjloq91KjmUAa2YqnZ39pJ+cfW9LgXeOu1m8dOWE7RYE4ePNaDTSP6Q/bb3jjXKWLoo8SHsH5GjVCrbuhW37NeTlpfHS5jBSGMqLoVhlpLC4lJy8Qupqj1G/exsaDWSlwepF0O3ykZldQHp6No01r5KZOoxKEVmxubG7F4AwZiBmyr4UCYYYDNDR20p2Tsm5/ikE4T+W0+nE+syPUMR8Q33ancR1n/sqAK/8+jtcro0ETe/PjqxS/4uaNBLzitAZE7jo87dwY3HxmOd2OZ1oD/8TtSVadsiuYf69n550+4LBIEdf+BNzTfF9rX2eFGZdc+Okz/MulUpFQfEiwjIrHR0/IOPkDPzsbNiypR/J005O2EyfE6wTPB4lCcInO5iWxGwcjl5Musg+vQZUCsiwMTIe1CWXCIQZSSMSkMAXUGHV6U85r0R3VyuevsNkWNzYksa+fq9DhlPKJi13Bok63Rn/DoIgCGdDqzXgdcooLsrjd88YKSuMpmjLTW0l4OvB4/GgE88l4SyJwKggnGNDQ0MkMXp6+amSZT4GBwdHBUblCgXB8DgHxRg9BiCq4cgeErt3k3rKegT9Xhi22SgvimTN77WrqWl2U5jtG+k0y4H8jAA9gw24fJmYvB50MR3oYNAKeEa2Q6EuAAb6evB0v0NhUmSUlUqn4niTkfT06D9c6Zlt+P1+1OqxV40WBOHjTyaTkZg6n67eWtLGGTguSXDouJb77tTR0wd9gzqefg3mTocV83XoEmdQmX9gpL6zPjI/VaVSMbV8Bqrwfoqz3NH9ww1AAQBydRJqxfDIPgWR/1ZpU4gNjGo1EgEpMk1VztA5untBEACe+fqnuS0h+hF4OAjpX/4DCoWCo7u3s6D+VYj5wHw8ZORbDz+DdhI5yXc/8yArLdFRnt4QMPfmSb8wS5LEgZcfZ66xL678iENPxZX3olCMv8jb6RQVlbFxYykZGTUjZTk5bjpbnJTozGzugiIb484aah1SkJEXWXBTrVYz6E/ApIs+n0x6D06vHpP25IJOarA7g1hNSrxB6B+SY4tJDSJJEl0dTfgGjpBp8aIaJyDaMyzHJc8lI7cCm8gLLwjCB0ypVBKSDIATjNcQCv2ddx/Fa5YGeGZrDTu3v8HKVZef13YKH11iKr0gnGOZmZlUDZ0+stmIkfT0+MWMnE4ngbqDHOuf+FhXAFSm0RGFQCBA1eYXyerfPSqfaLNLRU9aJVmF0aVEbVZISDDT1GHCecoA1BSLRKqljaYTuwiFoqNOVar4QK5GM0xz/UGUw5vItMZPj00zZDA8DMPDsHEjHDsW5IUXfsmLL/6V2toqwuFJRIAFQfjYue+LP+brvy3CO8Y3JEmC7/9OwfXr0nC44BePpvG1+2zccgWU5kNmyiAGcxmBmMHwaUlunM7oR5gQKfEnDUVTfuiMGXG5Ro06L4FAALPZFvccNBnA6YrU1KhC+MfIpywIwplrb21h5oEn48qeVU5h+eXX4Xa5sP/pv0mJ6cO0eSHri7+eVFC0sa6aGb5DcWU73RlMXzj52SqHt77KdOriz+tUknXRp9Ceg9FIU6feTVdXdDsvD5y+XrzBMIUm2N0ceQ6eyu6GYwMacguiI2VNllw8MZOMzHoYcsTPFAqGgvTYwe0Boz4SUA2FQrS31NF69AWS2UNekhfVGPHeziE5Ta4iLAWXk18yVyyWKQjCeaPVJ+ILwR13PMDGndGvR+kpMNi3D8/wkfPYOuGjTgRGBeEckiSJl779VRw9w/gniPl5QzCcWkpiYnTVzo7mRjqf+gXLNYMMucE5QQq+7XYTMxdfEFfmcjqpf+spyuUto/KJHnObsS27iSnlC+nqM8Ydl54YRKnS4gnY6OyPH6Kg10BJdi8tda8yNGTnePURutsG8Md0wi0WP0nyGsyn9JX7nDJk1kXs3Gli82aorIR16+Daax1cckkDPt/TvPDC3wkETp9rUBCEj5eMjAy++u0X+fQPZvL3500MOcDjjeQD/fQ3YcBhpLXHws8egtvu+RnDzuiK8Dnp4HYP0N4d7cLYrNDWcnRkW2csiLueWecaedZYLDaGHTH7TDA42I9Wq8XpjkkdIo8uZmI0QP9AB4IgvHevfeWTTDdGI3/NHpj3oyci+370Xyw1xMxKkeDgtKuYMn3mac8bCoXoePl3JMb0R1qdMqZe81+TXuixvuoAeX3b0MS8IfV6ZKjm34w1KXn8AyfJ6/XSX7ufIzvic3IWFrqoHnBgVkFYoeL1Ewqq+6DXCe1DsLUZajwmVq3MoLfr+MhxOp0ehzt+epBe7ScQE1g16SHBJJFoAq0qREtDFR3VL5CiOEBOkg/VGD9Nu11Ji6eU5KIryCueJWb6CIJw3mk0Grx+FQa9nn01GXH7Kor68Lvb4z6SC8KZEIFRQThHvF4vP129kOtfeZjP6eH/HY0EJU8VkuD/DWTx6e/8ZKSsavtGVK8/TLEmEnG8wAqvnoBOd/yx3hBs7DViq1hOSkp0RFRPeysD2x6nzOCIrx+EalkBJatuRK83IJfLScuaQ+dAfBaN7LQgHi9YrRk0tKviOtQKQIGL2v1vkBKoZn76MP0xs8usVrC74oObjf1atOkXozMm4/WGWLcuUu9dKhVUVPhZtOgEb7+9foJfVRCEj6uSKaU88uQ+Cuc9z6e/k8j3fw/9g/Dbb0Fhjo9Vi+B798NQfwOdA9a4Y4f7dmF3xpe5h6pG/jslLQ97zOMwOTFMf19kIRa1Wo3THX3JV8rA42wHIER8sEIKR6bjapUQ9A++xzsWBOHwru1c0vNOXNlbWRcwtXI2O195jtX2vXH7XvGnsOazXxv3fA6Hg1fW/5PHfvtj/vC9L+McHsQdnUVPU+oKUtLSxz0+Vld7C/qqZ0mIiQG6AtBfuJas/LHzmU5WOBym4cg+ejf9jak0MU1dSG8v9PTAP/4BmzfDvv5qnm48TNvgCXLylFhKoc8M7hTImgaVlamoFHISTV3YB7pHzq0zZuOPGSRqMUv09Uf7ZVoVOFwBWlo76Ws+TKa2iuzEwKiAaEiCVruKVl85KSWXkVM4HZVKhSAIwoeFQplACCif+xUGo1mRuGSpxKFDe9iz443z1jbho03kGBWE90iSJB77w29o+vl3+Lp8EIUcpmvgWi/csQ8uy4K1J2e9vz6s4zlZHp/+5R+YVjmTQCDAwecep8JZjzZm2phRAdMMSg6pytjT34ci7COMHLkhicqLLiAzM2ukbsORPSR27SbllHyiA14ZQxkLKS+PH2WhUqkwJ83FPrwTqykSAVXKIDUpyJBLSX5uOs1tdmwWB0YtdPeDawDmRi+Jc0gBGdFeuN3rJxsNniB0urLILp2LSqXijTf+zcqV7nFzZaWkhIFmXC4XBoNh7EqCIHxsyWQylixdSU/7A1w955sj5eWFXjJSJEBGf9fbWJJKge0j+1XUI1evAaJ5RzSK6IhOnU5Hx5AGqyky/V0lB8dgPWnpkVQgQRKA3pH6oUDka49KnQJEV8nWaSWCUuQZqVYG8Pt8qDUTrKwnCMK4JEli/zdv5vaYEZ37HHIuffhxBvr60Dz9v5hiugK1bjmV33xw3Jye2ze+Qf32DVxg7SMrAUiApmH4Zy3MSIagUs+CG2+bVNscw8M4tjxCsSk63ScQhuPG2cyatehsbndET2c7A4dep1DnRnXy/tLNeh5/SUMQH1dfDWYzQBhwMjjo5N//7OeC1YWUTYt8rOnsBIdjmIGglowULc6ho/h8FjQaDSazhZ5ODSkJkeedHFDKA0ioCIbCdLT3ogwOkmMNwxhdrYAEXXYVMmMZ6VOK4hbdFARB+DDRaI143H2sW7uWJx78MjddHvkSplGDWVPDsP0wcNX5baTwkST+5ROE9+jX3/06ur/+km9p4vPPFSqhwGrjBVUi+7LnIAMWr72Sh6+4CoVCwZDdzoln/8RclSMyLDPG/qCFohvvoTTBMu51A4EAtTteoyjcjOaUaewtLhW6GZeSn5455rEGgxGfbxpu/xH0J0dGaJSgVXtxuuTkZ1nptWtxuPpoa5OYnRp/fMijgJgsfWFlgJ5hOWHzHArK8kbKvd4uTPEDsEaZOnWQ48cPM2vWwokrCoLwsTV30a20t3yTzJNrgiycCQeqnMyZbkItVWHLuJ1AaPtIDrzsVAdubQn+4G7UJ3syGTYvQ4ODJFgsAPilJCAaLA3520f+W6lJITYwqla4ADBbUnA5j2M4+Ux9N8+oxahAqw4zNNyDzZb9fvwEgvCx99a/H+M6GuPKqhbeway0NJ67/3quMkSHevpC0LbyXi7IzR/zXEcO7MG+51luzR6OK88zw+1l8HQDJC9YO6kRj4FAgPqXHmSmyR9XfiCQzdzLzv4F2+1207jndXLD7aM+XnuDYfp74fNfAvkp8/csFrjjLjcPPdTA3XfPQKWSIZOBzSIRDHk40eon3Wagq20fwXAijsEBgqEAUqZESpIWGWA0hqir78CkHCY3YezlOgNh6LRrUFimkjm1EPmpDREEQfiQUalUuMNGwEnLwCxg98i+pbOcVHU1MDhox2KxjnsOQRiL+BdQEN6Dne9sw/bwz/j0KUHREwHYV5DFt1dkU16Ux//86g/86C+Pc+nV16JQKGg+foyBp3/NTFX81HdPCPaYplBxy/2YJwiKjuQTlTXH5RMFqHabSV52E7ZxgqLvSkxMY8iTRyAmF6pZBz6/G29AwmbVIVOmokGG/JQRn+pQ/ItGgiWMKvUC0jLy4srl8vgFAMai04HP5zptPUEQPr6yc3LYfdQ8sq3TQm19ZIX4nNR+0jPyaWqLPogyU8A53ElrV/T7rtUEba3RxPtaXV7cNfSa4ZEF30zmDHwx020TTEHcbjdarRaH55Q8o97IlFS9HvyeAQRBOHPBYJDB334BQ8yQjFeHtFz7nd/w9uMPsTZ4Iq7+y6oiVn7y7nHPt/vNDaxNHR5zn0wGV+ZD0/Fjp22XJEkceOFhZpri+2MHHGZmXn7XpHOTxgqFQtQd2MHQ1kcpl7djPGUYii8EL9QPs+aK4Kig6LuUSli82Mu+fZEPOAoFBEOgUkBhZojGlmG6W9oxu45QkdDGDEs3ro4+du3ppKa2F0dnOyVJQ6SPERQNhCIpj/pkc8medjmZ2cUiKCoIwkeGVm/FF4JrP/EDqhui5XMqoP74O+zZ+eb5a5zwkSX+FRSEs1R7+BD9N67kZm0wrvyAD9or8llbHskBerWuj5f+FVl9VZIkDr71EuZtT5CviT+u2yejqewS5l5164QjHHo6WukfJ59oFQUUn8wnOhlpGUV09cd/UbMlQP+AC18wzGCvE71ydKfaqtTgjVm9OTlZwuPxjqoXCp1+ymlfnxKrNfW09QRB+HgbDs6PL5AiQY/iXKg7fpCewfiFTxwDuxl2J8aV+RzVI/+dlFoYt8p8SmKIgYHI1HuzOYHB4WjAw6iFQXtk5fqQFL9AXTgUeVarZKBQ+PGJ1ekF4Yw9+4vvcLVxaGQ7EAbPjd+lv7uLnM0PxX3k3e9Ssvwbvx83KNnb20uK1Ddumh6IBBCNvp7TLsRx4M1nmKlqjSurc6gpWveZs8qv2dnaxIk3/k6BYz/p+tEfhxucanqyV+HVyCkunvjj8bRpYerqIs8shQLCJ5eqb+kAtR/mZUnYDBIKWeR+CxLDzE4NMGT3YNKP7rv5gtDYr8ZOPolZc0nPzD+rwK8gCML5pNFo8fqVFBfl8daO+D5bfnorQwMHRz6EC8JkicCoIJyFfRvfov/yOVx6SnBzi0+GfEExS/OjwcZivUR7XTU+n489T/6R8tbtWE/pa9f4NIQvuZeyBUsnvG7DkT2oql4kxxDfmR7wyuhMWUT50jVnlBtKJpORljWD9t7oXHynO4R/wMHQ0TZyQk58/tHHJegV9EVnoWIygdvdN6peWtpU2tomfszU1iZSVFQ26TafS4FAAI/HM7JatSAI509a/s1x26X5AVzuEAoFdLe+DuryuP06+QkU2vgFUXSqzpH/NpvN9A5EH7ZaFdj7I0ML5HI5noA+7lifuwt4N89olFYjjSQOUchDuByjn3WCIIxveGiIlBd+Gjf75GmvjUvvvZ/DP76PYn30BXY4CIHrv0Fi8vgrwA8PD5OoGP0x9lQWhW/CwGj13m1McR5AFdNN6XDLMS27E5PJPO5xY3E6HFRtfJqE+pcoNnhQnBJv7PXKqNFOJWf17WQXliKTSRMGduHdKfaRAKdMBj39MsJAdw8UJ419jEoBU23QFM0igvdkQHRIlo0tu4wUmwUZp//9BEEQPqzkSkukb2a6hlDMa/GapQGaGg5hH+gf71BBGJMIjArCGXr7qcfQ3nEhC1XxQdENXjlZy0uZkRafVDMYBn8wSO2jP2deqC2uAx4Mwx5s5HzyS6Rn54x7zUAgQNWWDWT178aqjR8F0OJSEZp2BfmnLLI0WSqVisS0OTQ0B2k8MgyNw+TLA6ToQK8Etz+yUmksuRxcw/Fz+IPBDk41Y8YCdu5MY7z3kj179OTkzP/AE/0PDw9TU3WAEzU76WrazYmandRU7Wd4yH76gwVBeF8sXHolh2qi25VlsGNfZISZzH+IlKzFBGIeu7npLnSmQjwxH2+yUv0M9Ec7w75g/Ij4kC86MkySxY82lZ9cdMmUkII75pxmIzidkV63UQvBgJhOLwhn4pmv38uKhOgHyMEAZH/lz7z+h5+wRt0bV/etpLnMv/iyCc9nMBjocgQnrAMwGNJgNBrH3NfaWEdy46sYYj5UD/nBU341aZmTzyMcCASo2bMV947HKVd2oz+lO+MJQpXfhmb+zZTOXTkyCtVgsGE/TZejqwsslsgHHIUCjEmrOVxnIlU38XEmDbi94PFDQ6+KQVk2+UWFpCQb8fsjv5taFRQfhQVB+MjSao14fHDHHQ+wcWf0K1N6CniGdrN3j5hOL5wZERgVhDPw/C9+TNH/3Eq5Kj5S+KRPybyLplJgHd1b3exQM03jo0Ljjit3BOFwykxm3/wF9BOsyO5ynSaf6NLT5xMdTyAQoLWuit4Dr5HjdZCvDWFUx9fJNUBN1+hjJW98Y2Sy0aOoNBoNl1xyG2+9lc+2bQaGhsDjgcZGJS++mIxSuYLKygVn1faz1d/XS2fzQQqT+piS5iU/2c+UNC+Fyf10txyht2eMmxUE4X1nNps51pgxsi2XQ0dnJAiZlthFdnYB9S3R505KEgzbG2mLyTNq0kNn2+GRbYU2PsChUUQjEVpDetw+ncZDMBhEp9Mx7IrPM+o+mWdUpwHCATGdXhAmqaXxBPMO/zuu7FnNVJIzs5l17Lm4UaRbXHou/tovJzzf8OAgtY/8L/bhINLYawoBkTyaTk3KmIFRe38fwV2PY9NFT+ALQ7NtKYVn8JG5rbGO5jf/Rqn3MCm6+GmbYQnqnFoGCi6hfNX1mM3xI1CXLr2SjRstE57/7bc1LF0aeSYqFNBZtQOF3YlxEjP8w5IMrzaVwuJ05PLo80ypDBMAtErweiZOMyAIgvBhpVKpCIUNGPR69lZnxO2bXtxHX+c+8fFHOCNiVXpBmARJknjyK5/nkmd/T9IpfzU/cau579JSTNrRf07+ELw9pOb7K+OnZrb5FHjmXcGsGbNHyux2O9UHdxF0DCAjTBglcr2FdF8TZeb4qfPeIDQo85my6qKzGm3pcjrpaTiMztVBti4M44w+cAXBIckJ6XTsbvNTnBTg3dhv2KsBosOqdDonkiSNyldlNBq54oq76e7u4uDBvQQCAZKTM7jkkllnlb/rvQgEAnS11TI1wzdqCptKDkWpPo511GGxJn3gbRMEAUKaC4DHR7YN2sjCbFMLw9TXV2MfTgGi0+Vd9j3ITba4Mp+rGlgJgDWpEG9gH9qTf862xADDw8OYzWYsllSGh8B8cka91SThcAxhtSadzDM6OHLOd/OMnmwlLkcfGs3ZfZAShP8kb/73J7nTGA1ANnpg9k//Ssdv/4vSmG/CXT5I+vRP0ev1Y5wlormuhsGnfsoynQ+rCV4+AZcWjq4nSfB8l4UlV189ap/H46HttT9RYY4fcXqYEuYsuXhS9zQ8ZKdtz+sUKPrQjjEgtcsjZzh5OvkL543bl7DZbCiVC9izZzNz53pG7X/nHR06XRIWS+RrtVwO6Yph3BoFvtOva4lCqcRqjuR516pDBMISKrkMgw5c7hAqvYJwyAF89FZuDgaD9Pf1MmTvRUIiwZJMsi31A599JAjC+aXRJeIPuZg27ysMDt+P5eT3p0uWSvzgL1uxD/SRkpo+8UkE4STxL4ggnEY4HObhW67mpp3Po48ZJBmU4OGAnqXTSnioVc7d+WCO+Yvq8cEfe/TctWxG3KqjR3x60q+4i6yUtJGylsYGWg+9w6wEB7qYPqrd18++IUjRwMn+LXavDHvGAsrLZ53RfUiSRF9vF87GoyRJdvI1jBsQ7fWCU6kiKVdHoV5B5wDocq00NLUj90gggdKgwuWCdwe7JieHGBwcxGodu5OdmppGauq6M2rzudbV2UZ6gnvcvF4yGWQleunsaCEnd4y3LUEQ3ldF0+7A538czcmR63Omhejs9pOeqqat6nXMCdOIDYLqVU0o9Qviygzq7pGPNImJSbTVKshJjU6Fb+xuwGyeiU6nY6BDhVkfGVGgUoBjoAOrNQmV2kZsYFSjjuQZVQAqVYhQeBAQgVFBmMj+dzazdmAXxKzDuDH3IqwvP8FVhvjRinuK13LZ3IXjnuvA269ge+cJZpwc5VlhBMcgPHIEVudB9sksRo3DMjYO2ph54XUUT4nPXx4KhTj64p+Ya46fwbPHlczMa2467UJEgUCA+n1bsDmOM1U7eriqKwhNZJC36ELSxpnCH+uyy25m40YTf/rTZiore0lMlOjvl3HkiIpMZS6L1kbTfcjlkVGoKXo4OgjpE6RA9QZBFhOQNRugd8iPzaJBAQSDkaeZQu4jHA5/pFaktw/00d5ynBSTl/ykyCjdQUcvx482kZ5VQmKy7Ty3UBAmx+N24xwaQgoHQSZHq9OjMxrFwIwzoNVqGbIrWbd2LU88+GVuujzywUujBqv+GLt2vs5lV9x2nlspfFSIwKggTMDv9/PIpcu4q3EXyph+oysMT8kSuKeyALlMxvGAjj+aZiP1tiL3uXF7PaRZLXzmomJshsgbQSAEBzXZTL/hDjSa6FuC2+2m8eA7LEtyjArYWTWwNAO2dcIFmdDqVqKbsY6CM5g6HwgE6GppQOquJVXtxaYep14YurwqpMR8wiYX+WnRF4f0RGjt9pJoU5CfH/lHR5IUtLbKMRgiHVO9Hrq7W8cNjH7QwuEwLpcTl6OfkG8AecjJ0JCfrNOkDkvQQWfP4AfSRkEQ4s2Zt4x3/qVg+bxIIDM3E57bOMCVl6QRdO0hveLHeP1voD35HCvM9NInz8HlAcPJDz3Z6UF6e7tJSUlDLpfj9pmB6BR6n6cJiEyX9YeNcftCgW6gAlNCKh5PHbqT10kwgcsVwmxQYNSDwx2ZTh/7LBcEIUqSJI5+51ZmxfyJ7HEoyL77dua88XOIefd/xZvIJV/81pjnCYVCbHn098zt2oVRG7/PrFGz4NrPcbSpgU3tJwBIy5vCjasuQacb/eV3/ytPMlsXn9O0yqFl2pWfnnC0oSRJtNZXE6p/hzKjH05pR1CCBreehIpVlGeOny/+VF6vl+LcKWTrNDQNv0k4HMRsVnLnnVpq3rYQu6iyXA7hsIRKDgoJepyQMkbsVZLgWI8Ka1YqEB1aqpAFCaBBBahVYQJSJHjg83nR6cYfpfthMjw8RHdbNVMzvHEpGGxmiSSTm7rOahQKJQkfkn6oIIwlEAhg7+tB5nOjlsIoFaBVyPE43fQ5hrHaUtCO8fwSxiZXWAjTR1NvJbB3pHzZbCd7mt4hEPikCDYLkyICo4IwDsfwME+trORTw40Q0wHrC8FrWht3l2TjkeApfQY3/+0Z1Go11Tu3Yjn8KumndJrtAWjOX8yclWtGjUioOXyA6cbRQdF3aRSQYYBddj3TV18/YT7SWG63m+6Gw2gdbWRqw8jH+TfWHYTukBFtZhmZmbnI5XL8fj9dXe+QlhidapaWEqKlKzpCQiYDh0MDRKeA+XytwPRJte9ckiQJr9eLY6iPgKcfWciBRuHFpAWTipEXsCEnp10FVhCE80epVNLcWwJUj5QNDQ0CaSSZWsnKzqNmh5JpxZFnkzUB6puOE1KoKc2PpPbQa6Ch9SApKZcAIFdnEhv8VMmj+ZAVSlvcPqXMAYBOp6O7T4lOHTx5DPR5gpgNClRyCAYDuJ1iOr0gxAqFQrz24vO88dQj9LU2kt/TQks25JzsfxyedxsVL/0Ga0w35oRHxtSvPjjmi6vT4WDPH77HMjpQnPLGsjWQRMXnv4vFaqVs5uxRx4bDYRpqj9PWWIdMJkMKeFkYqiEm3SbNTiVpqz81ZhD1XfaBPjr3vUaRehD1GIHIdrcCd/osihbPRqFQjK4QQ5IkhgYHGeyoRzbchVXmIVsDaMEZtjJzYbQ/5dcPEQ5HA3wqFbQF9XiNxRSV5HH44G6GfL3kWkB98rLDXqgbkJOUpkZrSCMQakd1cp/FDINDARITVBi1YHcFsRqVeDzDH5nAaHtzPUVp8UHRd8llUJDqo76tngTr3A++cYIwSX1dnQRcDtSyMEP+IP5wiDAyTHotyXro7+0mKT1TBPMmSasz4nb3cf1NP6K64SLKTk74m1MBz256m76+dtLT885rG4WPBhEYFYQxHK+uZvvaudyrdMWVNwXgsCWDm/LSaAvCK1ml3P2HxwkGg+x59lGmDR1Hd0pQtNGnRL7sBiqnTB3zWi57F/+fvfcOdyQtz7x/FVXK0sm5z+ncPd3T3ZNzYBjyAAP4I4MNBu86YGxwWFjWXi829q6N1+AAtsEmL2AyYzLD5NjT0zn3OX1y0lGWKr/fH6WTQ3dPHkb3demSVCqVSiXVW897P/dzP+lzVFytT8BjUtd5kaIzU5PkBw7Q4M2sWS4/Y0rk9RYaNl5M35Lsuq7rxBouJVt6aG7fNAmWVlvZtsFCYlSWMzwTsCyLYiGLXZlGuAV0qUIsJGjRgTWOpaFB0YS4sfo6JQtCxvmRz3XUUcdTD6PhNhYSo60NVYQQXLTRZXCwn2y5DRiee72a24uSaAfmO8671ZNAQIwmUhtx/ENotfGrIWlTrVYJh8NE4504/om51xLReSWou8xn1GG2JliSfISXp15OX0cdAc6cPs2fvvN1vM47yf9JVlFTMGLAZ4bABy5rNoi5Za6IznuTOz6cuvqdvGTjpmXbGxnoZ+LzH+XmsLlouenB/ckdXP/rH1yVOBjsP8Ojd97BplCWyyMWAjiRgzsKcF0HtIZh2gTpsjfT2Nyy4jYsy+LMo3fSVjnN9hVihoINQ1o362+4lc41iFXHcchOjVOe6EevZGjUHXpVlqlOtUqShfFUotXEXdI3pHXLpXR0BGUvbZ1hYlE4PAC4YNmQShpsvzhEWJMZnzlFxkvQlg42IgOesBFoSBCU76Iu+sznIizLolzMUy5OIXlZtDWS25oEqmximiaGsUagV0cdzxKy2Rn8ch7Ns6k6LilF4Pgujg+Vgs2ZskpXQ4p8Nksyna6To+cBTdOo+BE2bezlk1+PsG3DfMXjxvZBHrj3R7zuV37jWdzDOp4vqBOjddSxBPsfeZj+11/Hr4UWR6SHbJhu6+XV7Q08bEuc3LaLX/3LT1Es5Dn9jX/hcjUXGNAtwD4nwfo3vHfVsh7HcTCLhTXJPABFBt9d3W3fcRwmhwdwxo7Sppk0qKx4drsCJqoqTrqXtm3baVgjcIzFEmTMHVTtQ3PlpLXQem4dIRaXoUajZTzPO6dq4kLgOA6lUhGzNIlv51CpEtVdmgzgAkUO7Q1wZhy2da2+zmjWoGdT75PZ5TrqqONJYPeVv8b0zP+mqWavd/UeweETVXZsifDQoZ8Qi+1iITEaDw2hx25mITEaC0/Peec1NrUwNSDT0RTUpaZjcHZ8gHV920gkU+TGJJpTgRo+GYXxmUna2rtRtCaW+oz6BKNgxBAI3Ho5fR11APl8nj9726v4VOLYIi/2TgP+xyb46TT8q7uOf3NPLoqT/pMeXv1rv71sewfuvZPEnZ/lkiWd3idtOHPxa3nRbb+y6r6MDg9x8Off4LUtuUXKwkub4eJG+P4AXNkCuQ0vZfvGrcveL4Rg4NgBlLMPsi3qLiMwHR9OV+M07r6Vi9pWbuphmiZTIwO404NEvTwNhqBFYs2YpSvSQC43TioVPO9ZJ9i/32Fd7zwxIsTChlHTNDXDrKXm0aMxtnbPr9vW4NI/ZuOkpDkyMRWHQsklGVMJG0GDUE11cRznWSdgZit/SsUsTjWDcItomER0jwYDNJVFXrWrIaK52LZdJ0breE7AcRwcy8I1q3iWSb5YIOTZ5Kan+cl9D1EuFWhr7+Dy7ZuIhg0cX2XA8WhsAtfKYwE+MsgyQlaRFBVUFVkNoWgaqqqiquo5/ZF/2REKN2D7FUT09XjeF5idhr78BofP/vAHmLe9A8Oo2xPUsTbqxGgddSzA4/feTf6tL+K1ocUk5P0mGL0buakxwfcclcPd6/nd//VJxgZO4/7iK+wJLe5uanpwML6J3a9564rBphCCgSMH4MRDhB0H2wd9De/7qapMQ0fbsuXVapXxU4cIFQZpC3soq4z5VRfG3QhG5zbaOnvPm7hsbGpnZDBHS2p4TlG1EJFIiEIBErUmAI2NPtnsDE1P0Pze8zzK5TKV4lTgC+qXiWgOsTCkDZZNUM6Fig1lU8YmjKQlCYWbiDVWGMycpbvBWVZWPzSjEk521gPqOup4FtHbu54ffS7MbTcHSqZkHH5w3zQ7tvRQzT3Alh0fpVy9Y85TdEO3xYRop1AOmowAdLe5jI+P0NHRjaZpFKtRoDj3GdXSGWAbmqZRtULAvCrNrIwA3SSSrVStU4RrQ3gyDqWaz2g0BDNFF0fUy+nrqONzn/gbPqgtJkUX4sVN8K0T/XjeNmZnrAfKKtf8xT8tmtD7vs+9X/lXdg/eRWLJZfhYVUV57fu56uI9a+7Lo3f9iJc351Yst9ZkeFkPfGMozrrGAvd898uAwJVDtPdtoaGxicz+n7DRKKKtUDgyVFZwu69ky/bdi/ZbCEEhlyM3ehoKY6RmS+RX8XSf+74CMpZESYqjtnSTHz5DKhWMRZoGplkBkguOTxBrOo5DNLpY6ZlIbGEsM0x747wit7OlxOh4mHXt6tz3t2wbUAlrkC25pOMqJbOCpiV5puD7PpVKhUpxBsfMInlFNMUkpovAB38FAllVwHaXL18K25Pr3enreMbhOA6u6+KaVXzTBMdG9jw0fDRqfQ8cl+zoWf790/9IZWQAe3IIw7c5KeDLboi+K2/mQ//1VykLj1xOIZSIocgSiuyjIqPhIvtATbfjAL4faL49ZIQsIyQFZAVJ0ZBUDUXXUFQNWZafdPLDcRzyuRl824RamljSdBLJhmc9QWwYYQpZlXf/+gf4+Xe/yK3XBcnu9hbwyvczPTVMV/fyyoQ66liI+pWjjjpquPsbXyP5gTdzo75YofDDqsTGLVtoi0X4lhbjVVd1YVVSPPbzH7JtYi8NS64FU5bE5EUv5vJrblrxc8aHBsnv/RnrlQqaBoYBJ2fgoqbV9+2kGeeqBaX42ZkpcqcPkfKm6QuJVVUIWUsipzSR2rCTvoY1PmANdHRvpf/kNOs7TCQWzzRCIUEmo5JIBNGqYcDIyOB5EaNCCKrVKqX8NI6ZQfZKgS9oGBI655xQLIXtQsGUsL0QQkmgR5qINTTQvKTErRGYHDc4Mn6WuG4SUlwsT6Foh2ls7qbtAhpb1VFHHU8dqpUK2cw0tllmbGYrsG/uNdcOSM2UcYaurh4O3qNy8eZg3EnE4Njpgzh6iO19FhDYZkydfXyu7BSlnYXEqMLk3GOPNAu72gs/UMFHIhEmMyrh9HKfUQg6O6tSvZy+jjqO3/UD3neOype3Ntt8+9QMb9veTNmDwms+wMWt8wnfaqXCA//0Ua53zwbqwAW4z0qy9b/+Txqb144tCoUCcTuzYiJ3FmEVopLJJcpZorViHiFgaHCS/Y8Lbupi2fuzFoyH17P+ppsJ1RKnQQOVCcrj/WiVaZp0h3UrlMgvhe3BlKViG2mMlvU0tXXQXCMspvftBY7PrRuNWoveO6sYzeezpFLznu+FAjQ2duK6zRQqD5GoxYS6AolIlaoVJRwKvlQyLiiZHjFDAYJyes8tspCAfSrhui6VSoVqKYNrZZG9MrpiEjOgReWcFVOzCGtgusFvtZo4TgioOCEikeeHZ2odzz/4vo9j2ziWhW9VEJaD5Dmowg9mSK6HLwTC97GFT9X1QAgk3+PkmTN87d8/RWLkMH1Whvf0ekRrY53tm3zu+Hf5rfcf4h//78fJFGVc1cdBDspUaqpRSVJQFCl4LoEkySiyhCz76MhosovsERT32UAlIFBdnzn1qZBnyVMVVA1Z1c+pPjWrVXLTE6Q1h9ACftXxbbKTJrGGZiLR8zyZnyZISoqo7vLgoRZuvW5ibvnuLdPc9fPv8pZ3/P4LXllbx9qoE6N11AF8/x/+lu3/5/dZvySZ9rWKwg07tlFVdR5tbeb2TY0ArPPyhE7eR0Pj4gj4hKUTe8k7uGhd37LPyGezjDz4E3qdKdoWnHltOpwpwFgZ2ldQKBzMGzSv34GiKIyePY01epQ2tULfKuXynoDxqoKd7KFt6w76nmRnQ0mS6Oi5nJGxe5GXEKOuU8KsqATBdQDHGQGWN0IIfEFnsMs1X1ClSjwkaNE478B47jN8KFXBdHV8JYYaaiCaaKKhNYq81Ah1BbS0tdPS1k6xWMS2bcKaRnc8Xr9g1vGchOM4jI+NYJbKhMJh2jq70PULzBw8x1EqFshNT1AuFdDx0WO3sJAYXd9lYVk+W9ebjI+Pk690AQNzr1vFfajJ3kXLfOvU3ONoYj0+J5gdHVKxCrZto+s6utHGQmLUUMsIIZAkCUdEgfz8Nj2X2XpOTfUIh716OX0dL3joTvWcycx1Ybi/FBB9P47v4vZX/39zr42PDDH42f/Fi4wyLLiE2x7cE9nMde/74/M6xzKZDGm5cs71Wgwf2/GI1joTSRL0xARxFR6dhKtrfK3tw2krSdslL2VbUzOmaTJ0+hhuZpComycdErTInNPWp2hD1jPw4q2ketbT0dC0YryRSOzB847PlYF2drqUyz7RaHBQPC+ItSqVIZoW5LrzeY3u7qCsZry4nrB/Zo7cTcdhaKJCR3sMBQipkC86xAyFSBiqjkBmMQH7RDFnfVTO4Ns5ZL+CodrEDEgsaIR5Qdv0oGQG8Z6mqQxmTNY1+SuuO5pTaWzufnJfoo46anAcB9s08cwqwraQXBfZd5F8ge/7uL6H6/t4rge+hyR8ZAGS8FERRCSQfIHl+5iOw4++/03asgN0exne2bO4MlGX4T2dPt2ZM/yvj3+CD//xH1IoFjEUBVmWUGQZVZFRFBnJkfCQcJEQgIOMJEtUZQWkYF1JkhALyNNgGxIhGVR8FN8JRJ8L1KeeH3Cp/grq01K1TLPhzp3CVU8wXajywIOPkJkaJ93aya0vfxWpdMNTaqd2ITDCMUrVaS6+6o/I5n+fdC3X89LrBH/6z/9B5Q3vJRqNPyv7VsfzA3VitI4XPL7yoQ9wy1c+HhB0C/DZqs7rd23lMBqNO7q5qWk+8rWBlDIfvXsCHvOb2P7m9xCNLWb5zGqV/gd/QVvuDNs1FgX9EPh+psJhHiuG0AsmW+I2huKTdzWG3QRtfVsJyz7jD36H1rCLuooawXRh3AmjtW+lZWfvU+oXZRgGHu2Y9ulFy0Ma+P7iMlSJySA4LuYxS9P4Tg6NKpFZX9AL7GvkiyAorjgqHlFkPU0k3kSsIUb6SX7HeLx+gazj2cPMzAzHDx9E+D59mwOvu2OPP4ZUzaMIH19WcTWDqKawTjFpVQQVT+Kxo/txVIOG1jYaW9pobGp61v3hngwcx2Fs+CyqW6HbEERUCF91Cyf6/5rNtRzTFRfDA48XuP7KFL84/FPC8d0sJEET4RH0+CsWLUtFs7iui6qqNLd0kRmF5lTwWmMKRieG6epeTzLdTrW6j3CNd0nHfYrFIolEAkVrZiExqus+ApCAWBQsx8Nx6uX0dbywkS1Xz3ltHzGhOaJzf9ngxX/+d3PLjzxyP/oPPsUV4cVEQcaG49tezotuf+s5k5aWZXH03p/iHH0YP3TuemvTk9DV5dtMG0HMYbowWpHJJjax4fJLyY2epnDywfkS+XOQfItK5Bu7aezso+c8VIzd3VsYGZHo6REUCmCacPp0mauuitdUksF387zJRe9z3dTc49a29QwPTNHdPK+Q72gVjE+YdLYGAWQ04mE6PoYmM1NyiEelC25YZNs2pUIOq5LBd/IoVIloLjED0iHOyw90KSw3iPdsL4SvRFH0VBDvNUZIaxrtwNDgaU6OD9PdaGPUfgPThZEZHS3SQWe96qeOC4TjOLiOg2NWEJaF5NhInovwfTzfx3LdgPz0PGTho+AjC4EiBJovkGsEqeP6lC2T4clphkZGqI4OIzLjONkZSrksw8UClalhPnzx6j0jXtbo88+P/pz/eN+juIqGo2jYqoGrRfAiCZRkM+nmVlo7OuntaqelqYlYLIaiqsiSjKLKuMhIckCWCgKCVJJBkmUsSUaSgtcBBBIgIckSshyoT3UZFHxU4YIXJHbiyvyQN1N1+cyn/4lHfvAVXts6w+64z8mCxHv/uoFrXvfrvO9D/+tZiUk1TaNSivCaV72KL/7DH/K21wTjZUiH5thBJicH6Ovb+YzvVx3PH9SJ0TpesBBC8Nl3vYk33v01YgvOBE/Av9ph3rF7Cz+WQtxwxTrSxuJT5URV5Yp4II8oeXCsaReXvOL1i7JkjuMw8PgjRIYPsE3zVgyiT1saw1qKja0yLzF8PF/j8JTDdFmhqauXHqqkSydpMFYvl89bMKM0kOy9mN5Vuqs+FWjr3MTpk8MsIkEVQVRarKhKJC0yAz+nKSmTDgMXKFit2FAyFRzCyFqSUKSJeHuaxPOY+KnjySObzXLs0Udwchkk38dXNVJdPWzZtft54QnrOA6ZTAZN01AUhe/826eI5YbZSRZJgvvv0Oi3FDa3N4MeIh4OcU1nAtOReDSrYLQlSagKCVXQFnKYtFxOjQ5iF3JMjcXYuG0H4SepDl8LrusiRFC66Xkevu8H956L73t4no9wPfCDyQTCD8yvhA/4AVOAAB8kArVPEI77FEyHlGbTvCCn1NaQ4u77U2zuywGgqjAwmOH6K1MUp+5m681/RqH0bRK192zscRhxGpjJQ0NNJdDV6jE2OkR3Tx+hUIhcKUJzKlCTyUCpcBpYTzQaZXxKJhwK9svQYTo3SiKRIJFooWov9hkt1nxGNRlypouiFqiX09fxQsXX//xP6D57hmMR2LpG9cfXpnV+89pGiu/6c+LxOEII7vuPL3DRiR8FscICnKyquK/4r1xz2VUrbstxHKqlEsV8jqH9D9E4fpTdYRcRh2/PrL2/voCiKxNdxdi9Jw6PTGtc2ZvCLs1QPPgTeuOcZ4m8gm00YLT00dTWOVcif77QdZ3+/gSPP54nHoemJhCiyLe/bdLVZdDQ4OL7PuFwecn75ptASZJES8cepqbvozkZEDAyIEsOh48LFAVCIRk9LNPZHEbCR5WhahVXvZZWq1VKxdySpkguqRDITyDOA6jaULIlHM9AKDE0o4FIvIF0a2TNyp/ung2Uy20MDZ/BsyuBQk4N076uj1js2S3lreO5Ddd1cV0Xp1rFtwIfUFwbx/VwXAffdcHzA/JTePheUBLveS4lyyRfLDM6Nsb46CjW2AjW9ARWNoMoFtDNEiHLJOzaGJ5DxHdpxieNT6sCHSqYAv5OW90KYhavavK5JJxjd2LJCz6QhcIUFA9AwYWiCxMeVIVE1ZeoChlTKFgomJKKKeu4moFnxJHjaUINLSSb20i3dZJsbiOZTJCIRYlF40SjEVRVwZGk2jko1USlEqoskbUDlerH/uwjXDb+Lf7g+nnl9tXtgndsyfAv9/w1H3zvGf73p76AruvPeCVeKNyA41c4OrQNODi3/MbLytzxnS/yG7/10ee1kKCOpxd1YrSOFyQcx+Gzr7mFd524Z5GXVNWHL4gEb9y1gR9HErzykk7UJfHZqQo0xSNoCoxYMpXLXs1ley6fe10IwdDJYziH72WDaiOvMP6OOQrTTRtx3CrXJ6vIUnBx0WS4tF3DF7B/epCGeK3p0BL4AiZMGTPeReuWi+l7mv2UbNvGNKuUi4vLI1QFUrEw2Syka15dTU1wqN+iLXXuSNmq+YIGgXECPdpIvLGRlucB0VXH0wvHcdj7wP3s++mPcLMZXM9DNsLcvL6LnakYkgvTx6e4d3CAq17+qufshKhQKPDlf/w78icep0MUMX04lLW5tjXM6zY1zAXIm6IOlufw+YkxbtvchqK6fO+Uw6s2NHJD0uOu8QIvWpeeayjSEhLMuDbNqslo2eP0kUOs33YRQgg8z8PzPPBcPN9DeEGZ1xxh6dXUCr4PiMD/StSIS6jpC8SccUbNzWrusTS3TMw1mJYQCKhRnmKOBxWzj2sQQpA3bYrVKkrtAywfUg06i9pVA6a1C7hr7nlIDciAiHqMUHWa00Mae7YFdWDRMGSGHsMJhWlIBk1JNBUyQ4/T3RPITj2agbNz25O8oHxekiRMJwYU5l5zrAlgK5FolMkZhXA6OGa6DJkFPqMIj4jhYpnmnPdgHXU8H+A4DsVcDrNaQUIimkwSi8fPy44GApLh3976Wt706B3cEocPHodP7Vm5keT9OUglEhzc/BJec+1NWJbFvZ/6C24wT6EtKcF/yIzR++v/g9aOlZMNgcJ8kInHHyQ1cYKrIu4cMSdJ0KXB0RnY1rDyfu+dVtjatrq8VZOhJWGgq7A5CY9NQfcqxSUlG2Y8Ay/eQqpnw6ol8ueLwcF+slmTV74yaL40D4djxzwOHNhHQ8NG0ul5QqJSgWSya9F2QqEQangHVWc/CDjVDw0GbE65aAqULBjJOJyuOPR0J6hYPsIvI0QTlXKZcmkGp5pF8kpocpVoaPWmSOeDkgkVW8HBQFLiaJEGYg0NNBnGEzpe0WiUTVvqyq9fRmSzWe74+tc4fHA/pmnR29PDnquv4bJrrj1v71ghxFwZvG9W8SwLxzRxHAtcN4iHPJeq5VCuVLBMi0I2w/DYOJnxUczRYarTU0jFLHq5iGFVMRyLiO8Q81168EhJgnYF2hUILxzzVrE5A5hxa5YS50BChfLqolISanBbPELOxnA+C+3NFsEBJmq3Q7NJIih6Ack66QafW/ZlKkKmioopazhaGD8URYkmyUohGHqEt1y/sp3Fe7Z7vOeu73B63/1093TjyzqSbqAZMTRdf9obo802YXrnr/8NR069hO0bg+WX7oCv/+wbVKt/jKaln9Z9qOP5izoxWscLDuVymS/fehm/MXWMhZaZWQ++pzdy8/oevmS0saGnYU4hBcEFZG9e4ogT5m3b0xy2wrTc9m462+Yz9VNjo0w/8jM2UEBf4eKXdWA81UvvVS9idN/DXByZWbFzqizBjkY4MA2XLphrWx6M2wZy62badm54yrJejuNgmSZmtYRTLuHbJbBNZN9GxcGQBWEVQu7ii62sCMIhhfEZhXSNONA0sP0ySyUEjrfAF1RNoBlBSXxTW7Tu7VnHIpTLZf7tr/6CjUPHeIUGXTEDRYcxt8q3DxZ4pKWNN23qokmRudbM8OBPf8LNr7197v2zakYhAh+opbdZ8lAIge95wc33AtN830P4HsINlDl4AaEovNpyz6uRiz5C+AjPRdSeM3cvwPfIF0r8y79/mtT4UTzHYUKWedn6Rt69LsmD+RKf2Gvyvks75sjRkAJvb3X56pkM79zZyi2yzV2DeV7al6Jbd9k7XqQ9HiKiKkQ0mV4DDmaKdIUkLDPL2H1D+JKELykIWQ68oWQVSQluqiqjK4FP1UrUh1QjRpe+NhtuS4CQAvJB1NabI0rlxeTpClWqzFRtjk5kUSQfXYZkTKMjFdRbDpdc8qZOb2q+/rKn8xW47l3MxtEXb3WZybls6qkgmSWKpWZgdG59O/8I5dgGgh6ttX23T+E4DpqmYcTWs5AYjYfLc6/JSiMLiVFlgQre8aOLXlvoMxo2BIosKFUyhIy6arSO5weyMzOUMlOkPJskwVS6WM4zKGu0dHUTia5dF5+dmeFbL7uSd8+cYpZH/QMD3r0X3toLL2kK4pgZGz47pjCpJLjl8h3c/IGPMjU5zql//p/cEiosGmwcH+7Re7n6g/99RfV7tVqlVCpx/N4f0zpxgssj7opE3fYo3JExmPEElzVa1HoOUXXh3nGVWDTM1pbVE7fTpkxLQzDoyBKEleC9YXVhiXwMpbGLpo719JzjWJ0vhBA8+uj3ec1rLFay6Nu61WdmZpRTp/Zx+XwunmxWpbNzeWIw3dDC4EAr+akJtjQFjZhmEQvBlpBgvFjh1CmXsBE0bXFyp4gZ4oKaIi2EK6AyZ30UVP3o4QZiLSla6j7MdZwDP/jWN/nUn/0PxHA/e2SbCHCfp3LHZxu44hW38Wvvez/rN29ZNGdwHAfHsnCqFcxyGatcolIqUSyXMEslzGKBXCbD5MQEM6PDlCfGIJtBL+UxzAphxyRaIzxb8NiCoF0NCE9jYTD0FEy3mhUYLJ97vcMluOYZ4O5kCZJacFuMWqUPLkGVYM2Ww4M/PQMfvGbt7f7RLpvf/b3f4Qtf/iqS4qB5VVQ7jyWggopQDRQjSsgIPz3qTSXJ5o29fOJrEbZvnPec3tw5yOjIKRKJy9d4cx0vZNSJ0TpeUJienOQHN+/kPfZif6YhFx6Nt9Pb2clwey9XvPYt2PEk//K9/0ccGwBXUtjRGuctTVH2ah1c/MZ3YdSC92KhwNADP6OnOsq2Fc6qqg/9aiPtN97KtoZGTNNEsfJoa4gqNTlQXlTdgFTMyGnivTvoaW67YCLR84IGIWa5jF0t4FllsCvIno3iOxiyj6FAbGEwvtK1SpJwnHklg6KCb4JV1ghaIAbQDZNCdTY4jiEbKaKxZmKN0SftC1rHLzdyuRzvevGNaGdPMi65/FTAcXRa29v5k2t28RtR+MzUON8NhXhTbythGVIzoxz+t38gjsCbJUDFgse+wPUDFaXnenOKSt/38HyB8F08VyBEjQSdKwUXSMJHEvP3CoG6UkagiGBer9YUlkpNQakSrP9nP/gZ14eyvLvdpTkUTPy/PVLk1w6H+PMbN2B6Ej8bzPHidam5728ooLhVfnJinHjYYNSuciyh0ZuKsLdg0hUxMR2olKDiQcqXKVYlfGSQJRRZRVcVDE0hqsqENSU4lT2wzaCZiC2Ce1cEZVEe4KPgQWDWr8ggyUiygiwraDUyVZVrPlU1P6o55agkIUkSihQ8nlWe6jWPKxAcGpkmrFhc1uQTUgLueKLqsHfQYltrlL64wlDZZqoi0xwJxoir9lzJo4ckrtodbG/rerjjniyvfHEzP3rwQUJGHwuJ0cbUDKp6IzA+vyyRJ3/2MELRUGyfbAnStQl/c4NPJjNJW1sn4VgHPv1zPE3MMOdIU0VvYiExushn1IBsyUPUu9PX8RyFEIJisUg5nwcZVC2En83QjTuXHFaABgniwmF0cICmnl6iqxB+Jw4e4NjrruNdFBcll9sVuK4tSS6V4P0DOSQEBTTaW9v4rU1hnN//BANHD+J/5xNcHV6cZM058Pi6G7j6de9A+D6lYrFmyyGoVspkJsfJHD9AW+4s10W8FQnRigeH3TihrZezXdUonj7Ij8/OIMs+CJAlmVg0zsalhvIL4IugHH7HAn8lXQn8RuVYI0ZLL0YshT18FlEqMXjiAEJSaeropqm59UkleU+fPsHGjdkVSdFZXHqpw3e/+ziXXz6vELXteTmrEGK+XNhxqFYlepKLSdGFaItDbsqmMwnaBfZLmW+KpOFLUWQ9iRFrJJZO1K2P6rhg3H/PPfyf9/0X/pIprkgtfMXloDXKh7/+Jf6hUOD17/p1nGIOM5fDLubJZbKMjo6QGR+F6Un0QhbDLBNxTKKuTVy4pITHJXJN4alCaOFp+jT/VX0BUx6MejDpS0xYgmkbmlZpVmf78FBJJV6IEso5GLiEJR9D8onIgqgiiCmBYjReuzeewV5HeQEd50iabExBd+kwP/2dPYyFeum88hXsuO7ltLZ31PxOTRS7gFOSqSIjFB1JixIKR9BDoSctlgmH45SrGTLOrXjed+bG1Ffc6PDpL/4dH/rTf6uX09exIqSFirhz4LxXrKOO5yLOnDjOvpfs5vWauWj5URsGm9dRbGnH2rSD+FU30NbWSs+pu2kLLf7b5xwY6LmKXS9+FZIkYVkWZx6+m6bpkzRry08RR8AZN0Li0ptoau9iZnKcysgZ3Pw0qB6bUmvv8+kcmNE2ei+6hGh09SuREALLsqhWqziVAm61hHAqSK6J6rtouBhqoHx4Mjhb8GjZWWBWzFEoQGg6xWBuiqa+HMePg+NAuSyzYcON9PVtftrLJur45cH09DTvumoPn3CH6V0QswgB367K/Luc5i9ecj3pWIQfVeDSUKBMVKndS0GMO/tcW7BMOUec5fpg+j5Vz8f0BabnY7o+tudh+x6u5+N6tQ6kNbXorPo08NIUyLPkqRB8+cRp3tOa4drU8s8qOPDbpwz+6WVb+dhwmD+5thdtwQ4+lIOkOu/XV3Jh0oYZR6YoFCw1hGqESccTNCZjtMYMwivMaoOSqKDRiCUkfKRal1EJRVEIKQqGphLVZcKKvKJ63RXBOGb7gYdeQKYGhv0egKSABLIsMVmsMlMuE1Z8JAksTyIZiSOFQvQlHBpXqDR3fNg3LbOrK4EmSxzNK1zUOs96fOlbb+Ctrx6Ze/65b8d45xs38/2f7+TKi9+KGvn3uc6jpg2PH38D63sfpSU9v/3hoRvoa+sA4HTmATZ0O3PbO3Cig7bW7XiyhqE8SrrGMTgCcvYNNDe3US6VUJwH5hp92B5YToR4JDjmYxkFRTao2AbphiaSyXqZ1i8jLMuimM3i16wojHicSCTynL7GlQoFJgbPEnVMEngIYMaXsJHpiIQIr3DS2wJGfJlUMjUvCQ8cN3jg+9+i9WO/y2Xa4jLKkzYc6evgNRe3Ldveg1n4kb6R666/iYtH7g1KshegvyozsfOVbNmxe5HqHCBvVhk4tJeO/CAbIivXlpY9OO7FiW/aiVspEytn6DZWLvO0fbgzB9d2QWzJvNgX8OCEQm9LnI4F9a77cgbbr3kpoVCIoYF+7Mwg3YY9Rza6AqZMhbyaZtP2i5d1ZHYch0qlgvB9jHB4VR/PX/zie1x66YOcqyfkt78d4bWv3TT3/NjeCA1KBFnyURCoMnO3U3nY1rH29mYqYEnQvor1AIBda4pkLWyKFGskHInWCYY6nhK8/ord/Lfx/Vy2irD4qA1/UNC5JmmQ9mwSvksKjyZZ0KZA21LC82mGLwJvzzEXpoREBpWcFqIUSSCa24lt2Exy205aL9pF36bNdHd3c+LwAb74V3/CqQd+zhe2WUSWhG2uD79+Js47/uE/eNGtL1n2mbNjydjYGKdOHGfw9CmmhwYoTo3h5aeQKwVUu4zmmGiehe47aL5LCBedgFwN4ROWxdwtrkBcnS/PX8V6eQ6/ewr+70vX9kn1Bfz+PfB/b5hfNlaGhyYVTvutNOy+latf+jq61/Vi+7PNoQJfU0lWEHIISTdQw1E0TX9CY0w+O4IiMjzwvd3ceu38/Px//mMz7/vIIdLpp68nRx3PSZzX6PDcjebqqOMpxI++9hWUD7yN1y8Jlh82odS9geGWddxw4y42NYYpmcd4YN8xhjRoW3CBHrBUxHVvYPe2nXieR//Bx9DP7GWbvnJjpX5bw11/CZFoDHPoFNmTj9KoCVolKKtw9tyNU7HlEOu2B6TorM+nVS7imiV8qwyOieLb6LgYcnBxmythlXjKMqG2B6ZHYMrtMEeMqio4ns/whE0RuPhiiESCUubBwbu58879XHbZS0mn14i463jBolqtcubYMYYffRTr5Em+9PUv86+MsFTQI0lwe8SnUprhT+7fzwcu305/UdCpu5ieh+162K6L6/vYro/ne3i1bqK+7+N7PpLwgmjN95HxUYWP5AsUEXQX1SSBKoJOnIoEqggUoUL4QWU8AiFqNwRCUHsOLHkt7/jE3OKKpCgEHlPvbTP5+vFpUpEWjh07zoSrYCo6IcNgXIqxuzHMbJ1pTA1u6+fKmxygBNUp7BJMOTDtSJSEiqvoKKEwRjRKIh6jORam2dCRpNnAcDG54NhQrQYBvulLuMh4SIFiVFFwPZ+jQ8MUi3lkSaKnuZmrt/RiqLMRfXB8Hpoo0mjYXNrpLyJYJyoZHprW2dWYXPFYaDJsSvoMzphsag6j4jGaLSIkBVmSsf3LgHlitCERlEXp+gDNqTiPntK5bGeg6jd0ENYJJqZCtKStue2PZ/uJJ5owVAXbigK5ue3pao4WzcbDZqSskI7XLEEkyIwdBccmZIQplyWMdE0Jq0Am784Ro5rqEQHCuklhepj8zDTtXb11wuCXBL7vk5mcRK5WSbous/URlWqVKU0j3dr6rDWAcxwH3/dxHAfPtvEsC99xEJ6HY5pUykXWKT7agnMyqggc4TFQrtIdDWMsIUd1CXThkyzOW/0IIfh/f/dxrv/h5+ha8rf+uSkRv3wDr+la2ikkwFVp+NbZca4Zu5fwElL00XKIppvexKZ0I6JSJqxrSJKE7TgcP7qf5Ew/16+iEC17cMSNIXVtJWwVaZoZIK2xapOkURPy6FzSFmXfVBld9uhLeCgyTFZlxqsKm1sji0hRxweMNKFQiJnpabyZs2yIOou2q0rQHvYwnAxnTh7DCEcol4oI38N3XXRFEMIB3ydbG4Y1VUbGR/KDDteS8LAyw5yPVmUh72pZ0K4oJI2VSWPpPOxiwxrk56tNFzRFCiGU+FxTpNQ5miLVUccTxfj4OGLwDJetkRTYpsM6YfNB1V7RquypgreA8JwUEjMo5NQQpXACt6Wd6MattO++jPYdu+jbuIkdra3o+iryzyXYecnlvOfPPs6n/+ZjvPqH3+bWWIU3NLsoEvwgq/JDu5nf/Nt/XpEUhaDrejKZJJlMsnXr1nN+3qxoplAokJmaIjc5Tm56gtzkBOO5DNVCHruUxS3mcSslHLOKsCoojonm2Sieg+bXbvhowiPrWDw45nL1GgmXnw3Bte2Ll7VH4bV9HjAKxc8x88XPcdeExHErhVh3NTe99m1cvGM7jidj2yauWcAtypiyjKToyLqBEgpUpecTW+lGA6qo8MCBBm69NjO3fM+WaU4c38eVV730nNuo44WHumL0CcJxHIQQKIqyLDv8fIdlWdi2jSRJhEKh5/Xkrlwq8cXf+69c9qMvcumSLORPqhJO32ayW3bwxuu2LGuy9EAWmnXYGIXHnTjrbn8P6YZGRvpPUXn8bvrU6oo+epOOzFComVQ4RANV0qukHx4pwmVtq2fdhIC7JzQ2dzSgCgdDERgqiyY4TxUcAaY7S4xo+LIOuoGsx9CiMYxwjFDNJL9Q+CYNNZ7TtuHRu2zWbSvS2bVcoeE4cPfdKa699vXPi87hdTx9qFarHNm/n4mHHsI9cwYjn8fP5fCKRbIzMwxMTzNZHOETzatfajwB75qAP2kMSj8VKbiXFzxebdkzib8vwos2wfY1gnwh4M374aqWEA0Rg0Q0SmcqxuaGMDFdYbAKg5ZMCQ1ZN0jHomxoiNAUVs/Z0XQWvoAZB6ZsKAkVS9YRWgg9HCEWi9EYj9IYDaGtJBUFHjo7yZHRYW5qN+lLBPt8Kg8/HTXo6+qjt7UFJImMAy0xe1UFfNaE4yWDq3pXPyAPjEv0NIQp+RrrEvJcadj+YydY3/vbxGvq2akZKFjbcX2DjpaPs+/kHdxwxTxxeu8jKaKxrezZOV9Ov/+owa6uW3GAUxMTbNsyPPfa4LhMe/xaNEmiP3eWvu55hqB/yKAr0Yflw4ydoad9nhAZmVLorClbbQ+cQniuy3XFhWkzQte6vjqR8DyGEIJCLkd2YgLNdUEIhCwTVxQSioJEkKLIaBqNnZ0rxkqBZUdwbZxVmItZr+NZD2Mhat7Fwb0365HsebVGIT74AYkmAXLtXgHkmo+yBhi1fZpFv2nSpXqrxgyWgEFPIqWp1DqlMRvqm6KmvhJgOw7f+uP38+6zjxBZ8nf+Akmmt2/h99atnen96oTCVZvXsS4REAiegJ+baVJXv5JEWCOpBs3bpqo+maEzrKuMsX4NhehRN0Yl2UYjFhsMb7EX4AI4AgZNGV8z6ElFCNUuBrYPI1WfgbKLK3wualZoj2uLxlZPwGPTGrFkM0ZII1eusKPBXTMGOzwD65OBWvNCY7XBqRyToUNcdsXqx7JahV/8IsXLX74OgLExibZcatVrwtHcuRWjuSqMVCTisRCaESOW2kgsFqt7v9fxtMP3fQ7t3ctXPvlJIv/5RT6SXptq+EwBrgjBzidgV+sJGJ9VePoSM5JCTtEpGTGsxjZCG7bQfdmVrL/8Krp61tHa2vq0zn+z2Sw//tGPeOAH30ZXVa575e3cdvvrnrXzznEcLMuiUipRymUoF/K45TxepYRbrVCtVshkczx47Aynf/YFvvESa+UqIx/e/EP4zC2QuIDfqWjDgxMSx8pRsuntXPmqt3PLDdeiqipVL4izAtsnGSGrKHoY1Yigh2OEVim/L2T7+eLnP8Obr/vzucoiy4aP/NMN/Mlf/ieRSKQ+zr1wUFeMPh3ITk8zMzGBallIQuDIMlo8Tmt3N6FQaL4bMEFm5/l0wpmmSXZyEqdaRqoF8q4ko0eitLS3P68IUiEEe3/0n+z96//Ji049wqYlg/M3qgrmhou4+GXX8YrO1IrbuCIF352EbNMGdr/57RRzOY5+/8v0+Vk6VzgUBRdOOyF6UjEuNXwWNgBZCa1aQDKsRiYMFCVSEY2obJ9XF8O14ImgA7zpg42KJ+ugGcihKKoRIxSNYxhh4ueR9XTdeQ9B3xc4amVFUhQCL9Jdu3IcO/Y4u3df9eS+RB1PGFNTUwwNDRGPx9m4cePTPi6Nj49zz09+wtmf/Qzr2DHkyUn0YpFYtUrMskh7Ho1C0AW01t7zDeCGc1g0KhKkFOhT1y7jebYx7kPPGv7BEOx/ewje32EBFpDHKcLpCRgwJbK+iqOGMMJhmhIxOvwoblXjQUsm56v4aoh4NEJ3MkpPIoSyAjEgS4GPVeBl5dZuFfCykIdSBoZsyPsKVTQ8NYRqGBiRGDnbo1Ac4de2OIv2eVMKNiZNvnTyFLLvcHlHI2OewsaVBaEApA1wcg62K9BXyiYBhiro1CsUbZiekXBQUVWFdev6eOBxlZdcF5AFzQ3wix9neP0rO7n74X0ItYuFitLGhgKyaGOhz2hTo4nluoRUlc5EipI5TKyWp2lp9BkbyRAOR7CtUHB8atANG00OVKclK0RAg9VeUz0KZZjJBXa0jm2SjumkoioRFeJqhcz0BLF4ClVVn9brp+ME+/V8ukY/1yGEYHxoCKNYpNv3mU1/e75PwfcZ8zzadR0NSDkOmcFBIpJU8yMO6s5nT0mfeVLUnxUj+IFPLbNkJ7WmZQSCR5m1Cz4c32ewVMJ2bQx8fKCCTEjVSek6nhAokr8mOReqKeNTvrN8vdrz6ZkZfvq+d/E79sTiRkkCPtu0mWv/8E85+NW/O8fRhLAssGtxZdGFR4zNtF51DVujoMsC03E5euoMqcI4F0f8FRWiJQ8OmQbVaAO9MYk9RmXVpFfZgyFLIRKN0Ndq4AnIOFB0FFxJQw3pxFIKF6WgaDkMVioIWdASCX6fiYrESElmQ9KgSa/i+VUs6dxkZ2MYyg40PYE8cHdTkkceC7NrT5HVTuX771PZvXu+BNQsSIuuhY4I+v+5flDiD0EH+tgaBMVkRaKhMUZ7c5R8WUUI+3k1d6nj+YdsNssvvvQl9n3966T27uX6cpnT5+FAoxCMpwvh1gjPURemhUQOhZysUQpFMFPNKL2baN1zORuvuoZNW7ayq6XlOXGtTKfTvPFNb+KNb3rTs70rQBA/aJpGLBajpW25Jcosrhsf57eP7uO37j3ARy9zaFwQ605W4COP6ngtG/iHjEyoMkmDKNBpWFzZCok1pphxHW7tFtxKCXiY6gMPc9+34UjRYCK0ju5rX8cbX/8aYpEIYGO6NnY+TyUHxZpPqWrEMKJxND0QdQlivO4N7+SO//dXvO01QQwZ0qEtuZfC5GlmCGPE4jQ2ttST2HUAdWJ0TZimSS6bRfg+sUSCYjaLPDFBr+exUCNqWhb9+TyptjZk10WtBX+2ohAKh4mn089JDyohBMVCgdzkJJ7nYjsOEVmiZUEnPkf45Mt5hk9X6Nrw1HVBfzox0t/P6X/9vxz52Q95zcQJ2pfs8r9XNcqXXs+Om65mZ+Pq2UlFAj1ksPHFt3Pyrh/QVRoKGistGTstH06bCi3pBHuMtX/nkgtTrowrqZT1EFHF4VDGZkPSJ1x7a9WFMwUZXddZnwqRMzkvYtT0oOqBI1Q8WcVXDWQtghKOoUUShMNh0k+BqfVCYrS/32LzVmfN9Zua4PDhIaBOjD7TOLRvH3/3vveROnaM7eUy2XCYoz093Piud/G23/mdJ7TNQqHA8NAQ48ePkz14kKl9+6gcOYIxPk7KNGlyXdqF4MXAhTgtepzfBen5oM9vkWHEhC1rGNSLmm/nQmhy4Cu6NSYISLhaybwzxfggnCjDpKtQkXWUkIGIRRmPRxnXwxTRsRSdSDhCWzLKhpSBsQoJOYvZEn3wGC5U+NqBMaqux2UdDfRrKd67Z+X3SxK8cYPDZ06OoOkwbCoUWtMkV5NtAR1hj0fPZmmOhUjHQjRG5pWvszatEATHcX3++5suDI72AGfmtlWt5pHlTiqlg1y94zVMZh6ipTF4bUOPz2OPVxibhvamYFl7M5w+OcWm9nYS4RD9MwqxjppPpAaWk6UnFUYVBpYHodqfLBn3GZooEzV0dEnHdJjzGU3EYWLMpzMho8kgEBRMi4EJh86GEHFDZiQ3jernkGUZWV7QnktWkSQNWQ2hqPoTIk5936dYzFOtFGtts8BDIWTEiMcTz8mY4/mEzNQU0WKRhL/4JFUIxjXF9xm3bSKyjA8I38cFqBGjs2Rn0IwtuH+i0ZMAbCGwfB/X97E8j/FSic2qS3TRz+wz7blMl23ajPCq5NpC6FIw9q606uEjhxn877/NryqLfdkzHnzv8lfwoje9jUNf+BfGqs58hmsVDFgKN0d0hkx4vOlSGno30q17+J5g37EzpErj7AmvRYiG8KNpNrbJNauVlWO3KQemPZ2meJSGqEpZyAx5GnFDpzmu0rbCkNYS0uiJJRmvWByZCSbPTYbGZa36HPHqi/OrPFClYN0nAoHE1eu38P1vHuZlr67OWRZBMD7u3atQKMZob59/wXIaGU/2oqg6iqajajqqpqEpCmFVxXAcThy8l+3NYllVFEDeAklXSKegbHp4PiheGWh8Yl+ijjpWged5PHL33dz/pS+R+8EPuGR8nA/7PrMpxzvMc20B7jLhuBblO5EW6FxHYuceeq+8lp27dnPJunX1694zgLa2Nt75mx/gy5/5JO996DjNSpmo4lP2ZIpSDNG8gdvf+KtsXdeGV5zm7Nkhjpw9xsPj/aj5YRpEnq6QyRUtYhGpuhRhFW7shBsxgeM4Qx/j0Q9/jMN5nWFaMLa+iDe+9a30dbYT0OUmlmViVaYxBbiomL5MQ0ziwJk+4OTctm+8rMzjex/i5TdeRdE2GRsxae/sqZOjddSJ0ZVg2zb9R44gF4s0mCYyMK2q5IH1ur6sdN4ANjgOp0ZH2ZxKzU/cXZeKZTFj2zS0tj6nBuxqtcrwmVPEbZN2PFSgDEz7EjOKSkfNCEqToEkCQziMDQ7S3tMDgKqqz7mMsmmaPPTv/8yWIw/y0M/u4jfMURILDrkv4FOWgfrat9DXt54mvbL6xmqISILsj7/E9qi07GzxBJwxZYxIjO3tq6fjpx0oejKqptMYC9FXi06PVWFTg0rB0jk1Y+K6PkgSiiLR22SQCCkUF3COth+Uu1u+hCvr+IqOpEeQQ1H0SAIjEiURCj3t1g7eguo20/TO2SgAQJbPw1C1jqcUP/re9/jKW97Cp0sl5v6d1SrMzPC1D32Ij504wX/75Cfn1hdCkMlkGB4cZPLIEYpHj2KeOoXT3480Okp0ZoZG06RDCNYB25/i/b0U+HoJrlkjUBICZnwYdoPJvEdwHvq1+2XLmH/NR8KXauotpNpzCTF7LwX3SBJCkhGzywie+3KwrpBkfEnCl4PO7b4kI2Q5eI8ig6zgJQSfHj7Lx7eu/r9/KAeXrGzJtyLaQrOexx6BGr0KZKnm4XgZpi2ZAipZ1SATjrDfiKKG4+hGGCMSqE43psKklrQvna7YvPeb9xDxctzQ5pIA/uM+lVE3TpO0mzfsWdmgXlMgKtnsarS4SlO449g0L93aRHwVclSRoCvq0ROtYDoVhiYkKp4STOhDIVL6ytdHQ4XG8BUsJEa7W008T+DJAzionB0J0dIYeIrqGnheP1NTIdqbgmWyBDPlAcZycXwUSpbOQkW/K+WBDpKGxnReoqUhYDZiBhRFiQY1hu1DrgR6GnJFsEywXAsI/rASkDQgovsMZE16W8KoqkQ64uKIwMvV8YL/IshIkoziyai+jGcGZc2+ryBQQVaQJL1GnGrLiFPf95meHCeilmmNsYBgdqk4FpmpKg1Nzw1VzPMRQgiq+TxN/lJt0jwSQN73SdQUn08WTo34dITArZXZS37QzE0DdCBKQLAeN6tsVV3CK5xqTQr4wmXKtghJGgVfzLkKC1/UvJJnaUVBxRPIMvNl9CIg+e/94X+y5fN/w8v1xSzfEUdi7+2/QdixCH/mr7ldhb+1g4qZxCohbskFSw5xytZpuPhqbmtpIGuWefzQaXrdDHsiYvY0Wvw+Dw5VQ4hokp3tKrFVtu8JGDIl8pJBJBYjHAohhXTShkrLef44mgzdsRDdq0grVSlQYZ4LRQeiKmSt2nWndi0SSDg+iMBZFJDwkfFlBVVWkFQFIesYvTu4qvcq7rzz5wgxQSxWwHEEpZLM1q1RNm+el+Y7DrR07KChoXnV/SmV8nT0Co4OQlcMUkYwXjgejBWhgsrGDWFUCSaLDrG4gutZeJ73S2cTVsezg8nJSX7yz//M/m98g75jx7jdNOlbso4GtNhwyoaNq6gKR1woJRq4+Z/+nZe86rane7frWAOvesObSKRSPP7ow5zY/xBlu4qkaOzYupurr72eq266dc4+7VLHITM9yXj/CazMEIXMFCdPnuDRs0dgaIBGP0uXUeXyZp/26OqfqSlwdRtc3WYDw3je5znwt5/nc1mNQS+F1bqbF9/+Fq69fBeaohJUSAWWb5dc+4ccOfUetm+ER/bDT++En973fv7101t573t/g6uuvprcTIaGptXH0jpeGKh7jC6B4zgc27uXjcXisjjNAU5JEp3hMIkVAoYhaqqA2ixF1DIPHuDPKkZqk21mJ+AsOLCyvPggL8hcSJI01xxUgkCRIEnz4sUFv+NsGddqEL5P1jRZv4r31LQPjqLRbiy+Og26EF5YrynBnHxSDgK/uSc14xFJloPnCkjIyJKEJEsgy8hS0IUOSQ6OhywhSUpgFi8pwXeW5do2asdAkhZldGbJ5gN33Yn4zhfZLqr8n+/+kA/KuUXdCS0Bn3Tj9N32Bl7d107Jg4MK3NC06mEC4I6Myks2tKAtmYAMmRKmFqYvHV3mM+r4QSMUU6gYhkZTRF/Rw+9oGTY2rl2a1V8ASVWJhVRcFGw5hKfG6N24+VkjpgcG/oPe3mCGcOyYSTJZpL197ffcdVcLN974K8/A3tUBQXf3d2zYwPcKhVUVlh/TNJz169lYLBLN5WisVukUgg7gCdg3XTAsYBgYAzKyTF5R+Lri8bUOf8UJP8DPqvB/Q13c+Lo3cMOWDfTGwuiKjCLXborMY7bCtsYEY2hsWyHA9kXQddkmKMEKCswlPAl8FHyJYExSFCRFQVFVFDnwkpZlORinFQVUDUk30CMRjFpn6oUTyQ/9+tv4lZNfZU90OTladuH1J1O8/T2/iRg8DMPHiedH6PSLbI2yKgFwoRiowOkqTHsqlhLCVsNU9ChSNEU6lcQIhfnHX9zHp68tLbP06M/D+x6M8I5XXMOvrEKO/ugsNBpgouKrUaaUZl6/yrqPTMDWBoivwNWZLkyYEkVHRdM1GpcoSkcmM4job9JVq+4yLThwZhN6KMG29Ae4b+AhXnT91Nz27nkkTiy8lT2755cdPKazs+kaAE7OTLNp28z8dx2W0b2t6IpKSZ6ir3v+N+sfiNAXDy4Ux/IlPF+QDkFYAcuDbEUiamh0N4XmroBFG0qOhq/odK4hvFqNMNVVGV0PlKiOD27tdd9XEShUHZ9YyCG2ygSy6kDVS5JubMZ1g+9SJ0nPH6ZpMnXyJJ5pzsVkhizTpGlz8R3AFBBjRU5vGRzA9X3MBU3hACTfRxUCnYD8XPgr+QRKUdv3sWrvc3yfEu6KY9sshIAjDmyubexCvC6FEHzpH/+eFz/wPdqWjEM/dTQyr383bcf3c6NqzS2f8OCfqvBHW4LzYiGqHnx0QKOpZz2//rqXo6oqx86OkbJm6AuvHKeWPDhY0VFjSXantWXx1yxMH/pNhaoep7MpRUNYX3Xdc8GZLT8nuC4sJTV9YMYRbEhBZJVTyRdwOKewtSWMKkvLCPNJM1BBxZccVwdw3KD6yBUSnpDxkHFQGM0eZteuGaLRWkL9mM7WrQE5Ojkp0dBw+5qii5GRe+nsrOI4MDEG2QyocgJZDRGKKPS2lufWLVmgqhGqpkYo2kMksgZLUUcda8BxHO75z//k3n/7N+R77uHKbJZbFtiLrISHgI+EJD7VJli/5BwbdeE3i2F2v/lX+fDH/65+PXuOwDRNjh05SDGfIxKOsH7LdtLptWvFhBCUSyXGhvrJDZ3ALEwxeHaY00f2YY8dp9GdZF2owp5Gn741LJpWwuEM7M+qDNkxcvH17Lj+Nm6+5RakWJK/+9+XMzlgc3Ur3LYlaKJ512mJz+8NEe25jL/423+lp2/LkzgadTzHcV6RUJ0YXYL+kydpHBhgNSGPA5xUVbaHl4fCZaAIrO7M8cQxKxwMgrRZ1RNzxOrsMhY8FrDIiC+Yd8kUfZ8WXRBf4y9y0oFUrTtowOlJWLV/gBHwmsyGfTXasrYsWC7VPrpGj85td6V9nlcvLH5t4VtF7YlAWrTuTCbD8B3f4FpzmoJp8rnv/oAPGNVFhtB5D/5eaeKdb30LXcn52tZvV+G2ztXLoyoe3F0K87K++UF+2oEp32B9Y2zOxB+g6sO0LeHKKjHDoCGsrll25QgYM0HSoHsVxaUj4ERe5aLW8Nz3PZUP/Pp8SQFZB1VFUnRQQqi6jqIbqJo+5xXzVKNSqTAx8Z/09QX/NtMUPPBAnptvXr2cfmoKRkcvZdeuein90w3f97nnxz/mH//0T7n94Yd50xrjexH4U+Bvnob9KBEkiiaArCxTUFVKmkYlFMJOJFCbm0l0d9Pb00Nvby+d6TTxUIjTY2N86C//B/8WLRJdEkEfsOHDVpJr3/qrfOCWa1ac7A+5EqYWYkMszAEHGlQlUHzKEkhKkJBRFHRVIaSq6HKQfBFIgdJUAo9A/YmsQEhHMww0I4IWCi0jP9eC4zj84TvfSO+Zu3lnPENKCybb38uG+A95Ex/90nfp7Vusm7Btm9OnTjGw9z5yBx/EHTiEMT1Ak5lhk+HR9RT1L8s5gcr0H0fhQ9fBloaV1+vPw/v3NfH137sVfYUB7esn4eXrmCPoshYcz6nYeoKW1lY2tKXQFAnbhwfGgrKo80FAlMoUHAVN02iKh7hn/3u4/aXzKv8vfb+BX3l1Lyf2vwUHnz1XPz732skByEzexOVXD8yNw+PTkLSvI6yrTJctYj1nmXU+KZngT/SRMDTOVEus3zA/nvUPyaTkdoqWC5JNzwox/1QZcpbGptb5H+jENBiGRkNSIRJSVmxSsBrORZhmitC2xoTB8WEk46PIEqrsIwR4qMTjjaTOMWl5ocN1Xc6ePEmkUKCpptaEYLyclCSaQ6G5xPgMQcVQhOXl7p7nIQiIT0UIVIKEU2jJunZtfX/Wc9TzghL82meHCMjS2f2YAoQOLedInpy0oVe7MFLUtGw+95E/5FcnjixKLAN8Xkrj7byc1zvTJFZgN75ZhUdUne0Rj6sSgUb1oaLCgK3zzp3t/JQOdm9Yd16EaDSe4OKG1ZnfrAPDrk5jUzMdqSj2AlLTE0GiS0gKHhLICr6sBOO5rIKqgqIG1wNVwUcFKYhjZeEhIZB9D2o3yffA95Hx8T2PsWKZrSkffcllwBdwOi/RlAyTNla+RoxUoCG0nDxeC8dyp9m6Jzf//JjG1q0pAM6cNmhqvolQKISu68uS5TMz48RiB1loHT8y0kVn5zYgIDW86uNEQ1CsQnYGTFtCUmQSyVZa23vOf0frqAMYHBjgjr//e85+5ztsOXuWVzkOa2nwCsD3FYUj69dz48c+xp4bb+S/vOqlaKePcqtqoSK429E5G07y+vd/kHe/7/11UvSXEI7jkJ2eYuTUYaqZYbJTkxw6dIDs6cdoMMfo0UvsbvTYeoHhy6kc7Mso7M0aHCpW+dqv+kSWXFqEgN//jka182X82cf+CklLkEg2EQo9ExKROp5B1JsvPRFUpqeXSfwXQgNCrstAqYQmB0pHWZJQZBlPlrFkGVuS0KTl2eIngyd8GVhKjHgeZYk1SVEIyrFc16FptQBuQTm1s+AjFhK3YoXb7C4trEgSC94bPK/tnLR8nVnq1XFdjtx9J9sGj3CLKnhsOs/en/2YP4gsJujGXPiX+Dr+4O1vIqwu/jKXavCjSXh5y/JGLo4HP5pRuWldQJGXPRiwNbrTcbbVDOgKLsy4MrKqkQqH6E6sfLBsv1ZKJiR8SUFRZAxNpT0tM5A3may6tCzh2W0PThYk1jXOD8wSoCrQtKiclvn6YXv+82wfKgI8oeDJclCeqaqg6EiKjqKHUPUQqhYYVJ+vNUI+P7zouWFIeF6UoaEC3d0rd6V/7LE4N964+5zbruPJoVqt8vV/+Ad2zszgnj3LredIesVZbmJ/PsgQKD2nJIm8LFNRVSqaRlXXMcNhzGQSpbGRxnXraO7pYWtbG+tTKaLnEWRs7OjgLz/0UX717z9OR36c6xQbU8CP3RDFdCu/95u/weW79nB/tUKf4tGuCjQJCh4M+DK6prMlFmbKA8WIoCcSNCjBqeEJ8OeIT3BlBVfVUHQdTTeCpkO6fkHk51rQNI2//fI3OXTwIH/1t3+BOTOJr2jc8q5f43Ove8OKn6HrOtu2b2fb9u3Ae+aWCyEYHx/n7gOPMfnYPVRP7EMZO0mqOE6PXGVzFPQLUEqltKCMPzazOikK0JeERgp89sExfvXK9kWepY4HJYdFqsV0CK5qdYEZnOoMJ/bBsGUwrrSz+dLrOGwVMKwZ2iLeEm/ExTBUWBebTf85mE6Fyal1wNG5dWSK6BqMZI9yzZYbGZ2EjppYtbcb7Mkqo5PQXfM+bGuC++8fpquplaihMTUt0d02XzJ/ploiYaQJC41s0WFwKOBGXNenxDRCM7i4a+WD3ByFkuVQNPU5KwFNhZ4mB8dzyJfAcSUkSUbVVGKGgrZG5kyTQFt0ugTHwhHgWIEHeLYYlOVKkoymyoQWKEzHMjYtMZ/Igm34wiFfGWV8rEJb+3ky1L9EcByHydFRCpOTSJ6HUBRS7e00Lek8PHb2LM2FAokl42cciApBv2VhahqSEJg1YrO8QPEZEgKp1mjJrak87ZqJblmIOcJTJ1CaXoCbxhyejlqR8alpfvLHv8NveJlFH2AJ+LtQBy/qbuMyb3qZx/qQC4/HE7ziynZep0oMFGz2T5YAuHZTlLelgj9hdqTMbimDtIK8tujCgYpOSzrB1c2rE6JDpsSEkiTU3IEaieGmG8imGtA0DaXmqfl02zzFqlVOHjtExC/TrDvIEuQcmYmKTHdKW5UUFQQJn/AKHqprY/XvIpsKkcwRHBfyAlwUfEkHNYSkh7AZoGHB+D41JdHSsnHuuWEYjGXiTE4WMWRoj4AWEzi+x3RpjP6TZbp6N9aJqDrWhG3b3PHFL/Lw5z5Hw759XF8s8l/P8Z77gHuTSYx3vpO3f+QjvLmxce68/Y8H91Iul7nzzjuZmpridy65hB07dtStHX6JoWkaLe0dtLR3zC27qVxm+MxJssMnKWfG+cWpk3z28ftJlvrp0QrsTLlc3MSaSeeNKdiY8tj/SJnPvIllpCgE8/+/ebXDyz5zJwndxAi5VIszzMyA64dQjTTxRKo+Dr5AUCdGF8BxHHT33F6IScAXgpaFZos12LVbiVr2eta3Tp4tI5dRJQldlgnJMvpTTKCeD/yar5QmS4vKwhbCkCB7nqzJhSgSgPOI6tcidARHTp6gct8vuFWxQIVvnh7Ge+Q+3hNZ/HuctOG763bxkde+chHxaQo46qkUmtoIh1S+MjLKrqjD+rDAB05UZM5YKtd3p4jpCscqCg2JOFvTGjN2ULql6jpNMZ3eJW72VRdKPjgiUCxoqkJYV0hGlBUVpBuTYUYrNvszLgndR5UEFTdQOfQ1GUSW1umfh25blxeSJLOsqbP46WokqiQjpKBMeI5E1QIlqqaH8P0JgpnR/J+jb10jp05ojIzk2bHDJhYLfEgHBxROnQyxrbuXybEhunuf/m7oL1QIIfjO5z7HFbkc4UqF+Kz66ALgEyg8h4GMJFFQFCxFwdF1LF3HDofxIhHUWAwjFsOPx3Gamkhs3MjGDRvoCIdpcBzSNZLgQpAFipKEp6qE+vr49098ikIuxw/37cN2HN5/0UV09fTgKgoZRaE5HmWkVCLjBG79YUVhUyJEWJHJ+jCCSlMsiq1qFIwQih78j/WQgaoHiupnymR9x86dfOyzX3lS25Akifb2dtrbXwkvfeWi10qlEoeOHmH4sXspHH4YMXiUyMwQbW6OrRFB4yo/xkAVtp+HndKVTTaFI3fz2YEIJT1NS2s7GzubOFGJsblh9RBCU+CiRrgIE+hn9Hg/pwoqOa2JU907SDa1EXWLxNwcLYZzTqK0L3U5C4nRbRscSmWPijeA6b+IwZEQHS3W3GdnrRGc6Qjdrfbce8JGhp5wEsc3Gc/L0DZ/zbCkMkKkmS64qNWAMJ5TlNoWJyYdBjMGPY0rE/wdSeifsdjaEV507mkKpCMQDN4evvComIFq1/UUVFUhaiiEdXlZgm7ZMa0RpvOE52LCtOJBrgxtaQgtOZ6yBOmoz0w5RyEfIZF84ShHK+Uyp/fvp6tcpoMgBPGBTD7PseFhNu3ejWEYOI6DtwIpCjUPUCGI+T55yyLm+8hC4AmBqBGhHgHhaRAQqU8UPjDhOIw7wf9ZkaBbM0irKjFg2GdNFRaACZR9EFItWS0WVOpINQW9BEKSOHLwIP7HPsjbNXvRNiZc+LTRwR9vaF2WeHEE/MhWybR08ZKNxty50pvQ6U0szrZMWJA2NA6VYOeCA1N04VBVp7MhwbUtKw9Ujg8DXgh6d9K9bRfNgKIoz9okNRwOc9GeyykWi2Qmx/F9Qbw1zXpVpTh+hvn6rsUYrUAkpDHjSlieh+uBoYCCh6ZASF45uSWJpYNCEHt5HkT8CCpBzjvgm+f9pyeLDi0b5uczvg+lKQNROIakGch6BC0coVTw6Yox1/wTAr/V9pig6uYZHDjB+o3b67FbHctw+OBBvv/Xf03pZz9jx/g4H/Y81ug3yThwh65z5tJLeePHP87v7dmDvkrCPBqN8qpXvepp2e86nh+IRqNs2bkbdu4G4AbHYXpqkuGThyhNDnJi+Cxfeeh+opkjdCkz7Eg6XNLMsiZzng9ZAa1rZCFlGa5fV+a97/1VXnXb67jpxhfR0pwCLBwxjpkdJ+fICMnAiDURi8XrjZp+SVEnRhdAkiSWU53L4bM6tzerGpjDrN/nEhN/h4CbqtQeO5IUkKizPqPyvG+eXiNQ5drn1lw75x7D+SlKZzyPCdsGyWNSEli1cqOOsE5CW5yJc2CZd+azjZlCkf0/+k+uqEwSVYLSqX95/CgbTz7OrZHFE5lHLTh+2S184Por55aNuzCq6jS1xukKh3i8BE3Y3LC1iZNZk/uKFooEvekwr4vrnDFlylKUeNqgLGn4kk5jWqe5dtBLLkxa4CAhKQqaqhINqzQp0jknuLMqW8+HtKET0XWmXZ+mCLSp0oqepJZ/fl1RLwSrk6jmYhK1DFVXEG81yWQW74Tv2rQ39dAasTiydwzLdUBIdDU28qKdKRRZYrKcI5fLndN7po4nhuHBQZicZIsQjCsKnQ0N/Gh6mreu0TwkD5xVVT6fTmOFQviRCNFwmFg4jBwKIUIhCIcJx2KkkkmkpiZSGzcSW7eOlBCE8nmilkWyViaKba/6WQvhADmgXPPqDOs6aU0jXTtpfILEEo2NvORlL8NTFBRdR9Y0UopCRFEoAWokQrlQIIJHAsGMgBlHxlNUehsS5FSNrvUbfumzvLFYjEsuv4JLLr9i0XLP8zh79iyP7XuIzP77sE7uRxk7SbOZYUPIDYiS82DPZeDlPT47GktAieHSEI/tk/Ecg4eVFPtSHUTTDbSkYtzSaxBe5XB3RKEj6gLjlAvjnBiUGHdDOOFGxlu7cfU4EoJW3aJjBUXp1dsuZv9R2BVUgbJ7G/zkoRwdbRoxZ4b8TJTAuba23+EMmC0EBc8B1Gigstdk0JygAZMAbBckzWTvcJaWFPSklhxjHS7p8jk8bjKtKzQtNQkk6GQvcJksFzEdBXyFkqkRDS0mPGUpUKjGDJgdZG0XcgUwXQWfoGQ+GVOXleuuhlnC1PagYi0nRRciGfEZz8+8YIhR13U5feAAW8vlRXGSDDQLQaJY5MTjj9O5YQP5yUmUQoER3wchkGvkp0pNDUrgKXqOBuxPChXf52ClTLvisUMLFPGWD/2OxzFHo7uxibJrY/vuqirxrA/x7l6i63qxLItqtYpbKuFUiviVCsKsgm2i2A73/uf32PXdz3CRtngwOGDDkaYe/kf3ciP2QzaMx5t4xYYmSgK+PwVv6V79O92ZVXntliS/yAfEaNGFE6bGuJbkhk59mecmBOsMqyniO69g43MwqRqPx4kv6TxpO530T43Roltz41fFhTEzaKwUUlRcwAjJNEXUOVGBI8BxPSYqHrJwkXwXSfioko/trfwj53OQjqzsreIAftJk4aVvcgK6wyoqZfDKUM1QKEJMWUyKLkRYhYgoMT4+RnNzy3OqgWwdzw4qlQpf/cQnOPbVr9J5/DivrlbZtsb6HvATSeLB1la2fehDvO5NbyLR0FBXf9ZxwdA0jfaOTto75iteXlkuM3DyGDODx5iYGOHPH3kA7+xeusQk2xMWl7cGgqWW88hUXtYluLjpAA2ZA9zxT3/BZDFOWeqmd+v1XH/TK9jY14EkVXC8QYqTYHsKQo4RSzYRiVxwKUAdz1HUPUaX4PAjj7A1l1u1YQnAMWADT6K8/QLg1G4W4EoSrqriqypC0xC6DqEQciiEZBioioKmKCAEwvMCFUPtPpfLIhdyrJPdRYSnI+C0K9ESDdOwgBztdyA630MJAUGzJKSaDf2s4+c8SSwvuJdWuM2+dqHknuN7PHzf/XSc2k+fGvwNs5bL5x9+nKvHTnDFktjwp1UJ/VX/Hzds2RD4dLoyTjzMxrY4sQXO/ELAg3nYGIXmBT/mqAljREinUqSiBnFdpeoH5fQOCr4kI6squqqiyNIC64AF24b5ozPbzAWg1kBqtplWoCIOVslWTDojHpFVYs/+kkTM0LE9kAmC5uD0DXqcKggUOSC0tVXUB08Gk5ZNy1aL/v4SfX3zqojTx3Sichtta1x4HAFnMjLpVBhkDUnWkZQQiqajqsZcKdyzSWKZpolt20iSRCQSeV4Fbnd+5zu4jz3Gra6LAP7knnsYevRR/rlaXXWc+oiqol17LVe1tJDWNKqaRjkUwopGUZubSW3aROO2bUQBb3ISNZcj6TgXXPppEVBTpiwjaxoRXSelqnP75RD495mShFAUfFVFrdk7hFWVkKJg1dZzZRmh66iGQck0UR0T1XXIWwEp22iECGsqk75MON1Ay7m6gr1AMTMzw5H9+/jb33w137i1sua6v/UL+Pj1AfG3Eqaq8MikxIRjUFKSiFgzyXQjXY1xruiJEg+tPRD5ImgyN2pqqKEosXgMQnGKRLCFSkSDzWmFlAFfefjDvPk1+bn3fv47CW5/5UamDr6Wsu+x88aTc6/1D8Hpk5dz4y1TzF7apnNgTF1EzFAZKzpM6zmmpwLPPyFgpqjS06SztSuKtsL3dTw4OKFxSd/Kuphj07B1AUFkuVCogO3JyHKQOIuFz+036gmoWlB1FGxPBRR0XSKig66y4r4BZMugKJA4hxftSE6jo3vLc45seqIQQpDJZKiWy2i6TmNT09y1ZHxkBOXoUZrXiHWHCTq+P1NUsU8wLtqALUl4ioKv63iaxtnJcS6XTFY6bbK+xNmGDvq27+Dk/n2022WE7+N7Pp7wg5MJH4VZItfHkCAkLS83FELw+U9/ilce/MUyy6Q7qjK9GzdxUWpx852iDz/zDK7r7aLJmA9UflgFOQovWaHv2t1ZBSsc59Z1KX44BWlDpacxRXtMp+TCoRJclZpff9yWGNObWHfVzc/LDsG2bTM9MY5llkEIdCNCU2s7qqpimSalmUnSIXfRdVkABUfGDyVIpBtwHAfHquLbJsOjj3HRroG5dY8fV9iypYH+0ypJpwNVDsbmhf+XMcuidbM917/VcSB32qA5tDgaOFuCjgbWbFjl+DBcgKYUuL6E5wfWTAK1FsuFUFQdRQ2j6qE5f/tnY2xxHAfXdZEkiVAo9Eszvj0XcO+dd/KTv/kb1IceYk8mw0vOURl0CvhBOEzhttt424c/TMumTYRX6M1RRx1PJTzPY3x0lKHjj5MdHeDo/r0MHbiXcuk0//yWtd/7lcdg3Q64ZvvC7cGBATg2rDKaj5JzWmnpuYIrr38ll+7ehqLIVB0wbXB8reZP2lj3J31uou4x+kTQ3NXFeKlE5yol9SWgrCgMKwrSAlWBBmi1C8Wswf5TgVnT/aASTwQRjuNAtbpovRUDbVVF1IJtp5hnu7r8O2kSbFYFh0tV9ESQ8aj44CCj6TpVX1BCIZxIEo6G8b2a+lX4CF8gRI2A9YOgXAgfUTOrF7USM+bua4G78OeVtCJ4LgmA4Lkkai2WBAwPDeE9fBdXSyZy7d96PF/hzr2P8dKZQbYumQD+R1Xh4re9m8bGJh6TDEbCMV7Zqa84EZUkuDQBD+WguSEw9D/jhmlqbaMjHMbVwlSjSbxUI4lEkvgK5vZPJZKOw8DpEzR6RVKheaLZ9GG8IpE0dOKGynAZkqHgtzOU5UGt4wscX2D6As8VuPi13wMWkahSUHJwviSqEwr+P8vKBxRB4hx/eE0CXfVpiZWXveY64JoBiVDyJXxfxg/2ECQVSdZB1lCUEIo231xKVdWnpJShXC4xOTqIIpuENRchJKbHdYxImtb2rudHuYRtzw3mErCzs5MNU1P8zpkz/I1ts3B6K4DPKgpjnZ3sWrcOb+dOnC1b6N21i0g4TGVkBG9yEr1YpOHw4fPquLwQJSAvSdiKgqqqJHSdNkWZuyJVCUrnHUVBVhRQVRRVRVMUDFVFVxRMwJZlKopCNRIhFIsRjkTQdX3u94jZNlOjI5hmlUiNBCkjU5IUwukkTa1Pp67r+Y2Ghgauu/kWfnjrmzmU+Qw7VumcfiIbNAtZjRQFaA7DK9YJZks489Y4D4/B6NkQX94fx4s0k0430NYQY2NrnK6kvkxBuSEJG5KBlnjGzHFyWsFTQnSkE6yLGkzPwKAdYnyqD3h87r2xcJl4FB6a6eeajbsZHIOeGhfe0wmlMwVGJqC1EY6ehFIJRkbPcllfFyN5kw2tsHPdwm/jMlZwufeoy3XbkssISE0B33cpWx7RJQelYEF4yTgYUqE5AbX+4jieTSYPtiMhSyphQyMWVZZVZyhzqtJZ2X4wPlZMiaII4fkarucTNWpjuBoQplAzOhGQK7nkiy5IszUuEo1JjUQkOBeFEL8UxMFIfz+jp07RWCoRcxwsWeZANEqiq4uNO3aQGx9n8zkEAK3AGZ4aYtQkiMOs2ThM0xCaBoaBHApBKASGEXhhAsLzwLYRlkV2apINWCuSogBpWTA8MYI1PcIuZYmNUXBhPy9UTIsv/Pmf8q7cmWX/8c9WNW7bsYVmYzHtcY8lY7S08tqm+a5fWQ/2C41QQwN5zeNfxopsDLk0qh4ZV+a0pXFRS5wbOoJEgiQrXNzZTLj2h4+ps53YYcjRsNq3sG73FbQ9jwkUXdfp6F65aVEkGkWW28jmZpB8GxUfgYyNQiSeJJ0Ijq2iKBhGENxO5lKLtjF7ytp2FM9I4ONh+4Ky5+ELH9fzURvnSVGAqXGJ9tDyFKnP2qQos69LEDdg1g4kuFnL1nWq4JQCL1XXV6i1EUNIGkg1ayY1hKo9tU1CLctiYnQQzy1jqB6+D6anE0800dza9ksxzj0byGaz/Puf/ilTd9zB+qEh3m3brNWOqwr8pyyzb9MmXv6xj/GmK64g1dLyS1+1U8dzB4qi0NHVRSQmSL94KzdVX8LIyDS//tpbcbzqqkllgLvPwidfv3R7sGcD7NngEtTZ5ekfP8H+O7/MQ98MM2M2Ekrv4JKrX8kN112JpjtUCxmKtoRPCDWcIh6v+5M+n1AnRhdAiMBjcsA0GTFNNCFQZZk+wyCmKGSB4USC9vZ2rGIRyfdRZRlf11HjcXzfp2JZmJaF47rYrhtkjCUJLAvJcZAdB8Xz0BeQqE8F7SITeAyFgy8CrhvcTJN+YF2NQKy4Pv1lE8sNum/6SDSENFoMg2ypTIsMaSmYIMhW8BiA0tRTsJeL4QlwhI9dI/KcmurB8wXFSpWhh+/nGnNxB9Q7RzKcObSfV5XH6VqSrvyMZbDj3f+FmbZ2quk0ti3YWDPHXw26HASH+8wIiW2Xsal7HZFI5FkpGdI0jd4Nm5menOD41BghRSAhocjQmtRxfJnhikxrTx+RSATXdalUKuSKOYRdQcVFlQRhRZr3Jj2H2aPjCxwhML0aiVoLrH3m1b2KBDIe4eZggr40yJTlJycmV6XAIysYjRYG3itALAi+PfB8CU8sVTBocwG4UlOjqqq64oWpVCoyNXqKrkZryQShSr5icvasSW/vpud8YK0YBjML9vEN69fzR9PTXC3LfGh4mFC1Sq/vk5UkDus60e5u/uTSS7n7ssvYdsUViEyG0EMPkRSC5YWTa2OhP6iuaaQ1jc7arGy2LH4cAiWooiCramA9IcsYNaWwTUCUVkMh3ESCcDxO4hyKD13X6VjXS7lcplosIHyBrGnEk8l6tvY88d//99/z9pc8xP8Qh9i55Ic/loXfeqSRP/zrz/D5R76PdfhH9PkjXNXiL2q4tBTJENzaDcHE2aLiTPPIJAwN6gyocVyjgcbGNNFYjI6GOFtaI4s63jcYcKXhARUcr8LxfphxQ0SjUXY3bMO0Hseo/byX7fAYHbfIeoNMV3YyXNXpaQ/Uw4oMOZHh+N4EUcVnR3NQHbC+u8RjA6eQ1RAdG5e3dm9PgKrYHDhb5tL10WWvhzVBxS8wPSOD0EhHQsQNhbMzsKFr7eOtKdAcg2CcCxozFfJQdSQkSSUc0ohFlBWD95AKoZggoN5MHAFVE0xLoWrK+Oi4qOiKy1TWJB726GmZrdAQOB5M5T1KVQ1PMZ4fCZ9zYPDkScwjR7jcWkDS+D7dxSJjJ09yyDTROHeMpbGgOSSBP7zr+3hCBEp1IbCFCDrI17xERa355lz1x+zN95FqCXPJ85CFQJktya+V5Suw6H4WEzK0nqMib70GZ51zd6VfDcOTk9zz0Q/zGxQW6SeqPnzej/Frl2xEX/DfGHXhETXOSzZ3zBGaIy6ckgw2NjdwU0Qn78Fe4DW9MQYKNgXbo1dXuCmhL/F3lzGWlAz5SAxtvJ7uTdteEKXaRjiMEe4M/Gw9D1mW0fXVB1RJUpY8D+4TqS00ta3Dtm0cy8SulPCtChVzkvULhLa2DVIlTk7RcX0P4QskfCREEIP751aMnm/0oyk1NbsOy6yZFsIHu1xL9vjg+QoeyoIYTkVSjIBEVQ00XV+1osg0TYYGjtHTaC6yEBHCIVs2GTpbonvdc8+K4bkK3/f59he/yL5Pf5r44cNckc9zA2uPoY8BP00mSf+X/8Jtb387t3Z0kKjbZtXxLKFUyhKLWTgOmKbNt771ad72O1U+eRf8/tUrv+fHx8HXYHAS1p+j0KyvDfrafKAMlMkUBnn08A/4/N0hpspJ3NBGLrr0pdx884uISybVzDg5b9aftJFwOHpeRKnrusxWddeJ1WcO9VL6GlzX5eBDD5GenKTTcebKXCrAUVnGTaXo2LCBtq4uNE3DcRx830eSpEVlI47j4DhBmfFa2dDZ9SzLwq1UcCsV/GoVLAtsG9lxUF0XVQhCzCtHnwiOSbA1DJOWw1CxwhbFJ1aLtYSAaR9O+yrxaJSLjAubLAkRNCUIyE0fRwhcL+jE6vsCH79WZx4EYrKoqRURqFLNk1UKlA+KBL4vePjocRqHTrBJnf/LOT5879QQ2ZNHeJ2dIb1k4vhxP8WO3/og2xpStKhB6Vi/DUoMes4hPri/HObS1771OUWmOI7D9OQkVqWAjMBDwogmaGpeO/vqOA7VahWzmAO7goyLLgkM5YmX1jsCJssmrRtyqCqMjJh0ds4rlgcHVBSrg841aqxny7H62p7YPjxR+CIof3XcwM/Vq6kYBAqgkS1UWN/urdpAbKqooMT6aGi4ULrwmcVgfz+Pf+1rXFkozPnfOULwv44eRZqcRLdtirYNus7NLS1sTaX4fkMD77rmGsIXYBmwmj9oaHb8Y3FZfEhV0VQVW5YRsoxWU4fasoyvqkjxOLF0GsMw6hOXZwmmafLRP/ptTt3zHfbEC0jAo1mD5Kar+OvPfo1kcp489H2fQwf2cfTHX6a47w46zVNc1eyRPkfp9kLYHjw2BWdKGq4WQ0RSpNMNyKEo6USMrW0xGlfpxDSQ9+lPf5Wbr5q/Nvz9VzqIRjt4dcfNPGZmufzaCnc/APksZPMSbfEUt12aILzkJB/MwpHpCC/bnVrxs+46rXDt9oZlRv77RmHnxnkP7qoLkzkZk0YiqV5UHHxnBp0SiYhY0+9zKRwBpQpU7KA5jqGrJCIq2nkaflcdGM0EKtXEKgTbWA4cpZWenr7z37HnIBzH4cBPfsKlpdKq6xxVFEqRCE2WNW+oW/N8nyUzJTFvgqPWHqtLbs/UlGSfDHuWc/GLIAQ8bsGe8zjnbBFUnJhIOLLC/oMHifzTR7lJW1w9NOLC3ZEW3rSxc24cdgX82FbZ1NXJpkQQRJ1wYFyLsKO5gYYlf+zvVuGl7auryyctOObFuKFrcaBwl5PmxtvPUeP4Asbp04+wYcPDc89PnlRoaWnAMF6zLGa1LJNK5R4WclKDAyph0YKOj6EuLrnPmh6Wb9K2RseciRLIIUjFnkCj1acAbk3n4Xgrl/JncxXWt9hoq4yzk0UFLdZH+jkewz3b6D9zhq/8t/+Gfd99bJqY4GWuyyqFJEAQB35HVTlzzTW87c/+jERXF8nOzjmlcx11PBuwLBPfHyIchulpm3vu+QGRyB/y0pcKPvsPcPbn8DuXQVNtzDMd+JcHFe4YWsd/+/NPMjZ4iP6j9+LNPEZ3apKL1zns6oMLySNXLdh7Ck5P6EwUY5Toom/rjdx0yytp7+ygaoHjqyBHiSYaCIcjixLVlmVRyM8gPAtZEoFDDhqxZJpI5BwBQh1r4byuYHVitIbDe/fS2t9P0yrNSg4ZBp3XXUe6oWHF158ueJ6HbdvBrVLBK5fxq1WEacICBarmeXONn5YG8cckWKf7HMoWuVTzV1RQVn142FXZnYxgC4Hreri+CFS0wgvmFLP+VSLwFw0mDUFzgFly88kETgNTGYYee5SrZZP+XIHPPnKQcj6P8H0mHI8m4fGXMZPEgsDbFvAPsV5++/d+D01dHJFPejClwUXnMF2+20px3e1v/qVQ0KyEgCytYBbzi8jSpb5Ua2HEnqGzL1BijY1ZtLfP+xIOD8kUc91sbBCrKg9GClDxNZKxCOAi1W6K5KPIAlVZoDZ4hlA0oWRCe2r1dVwBQ5k4fZsuesb264nA932+/4UvYA4McKttz5WEOsCPs1lGKxXSvo+qqszoOk3Nzbxs+3b0c5CiJpCVJExJQqn5gyYX+INWCYjQ2bL4qKoiKwpVSULIgRevoqq4qoowDIyGBsKRSD37+RyE67qcPXsWIQTr1q07r99ICMHJE8c59OP/R27vd2nKHeGKRou2C4jdPB8OZOBEQcVSo4SiaaLJFEKPEI5EWdcUZ32jgVIbW74w8H1ef3uBr34bDh6G/kGF67b0IuktDJcNLtrSzKu2qbTWxv0zGfj5KZUrNzeyc93iLNk9ZxS29DTSklw+qz44Bras05YK0xLX0ZSgRPT4DOxahVN0PJguyZh+I0ayl2iigUpxGs+cRqNM3PAIn0PFvxC+mB2nJIRQCOlq0JRpFaLUETA8CX217Ijjg+sIZAVCtfd4AgYycTY8x8e0c6H/+HFiBw6s6R1qEXjC73rG9urJ4TEZdkeW+4EuRNmHMzZ0amAh4yoKnqrXPOfDKEYEJRpFi8YIRWOEQiFCoRDf+8TfsPVv/5DNS5os7bWg2N7LTe3zse1RB4ZijdzS2YwEHHAkyuEYe5ob5qtRaqj4cNaVmZZVxjyP17Z6y5qG5Rz4aV7nto2NhBZ8ubIHBxKbufrmW5/wMftlR3//Pvr67p97fvq0jKa109Pz2mXrjow8TmfnfHVXtQqOcxmJRBARVCoVyoUswiqh+i5VKpi2R2cEjBWIRdOF4YJCd0MIy/WZMQVxI6ju8kXgoq9IPpIMqhLEf6oKurL2f/ipQtWBTB661uA8ny8x3LMBx3H4zMc+xug3vkHz6dNcXS5z2Tnecxdwd3s7l33kI1x6ww3I6TTJ5uZ6TFfHsw7XdSmXh0gmXfJ5l+HhU+zdezvveMd8BeLx4/D7v64QMiPIkqDox7niRW/g/X/0JzQ2zqcCqtUqp44fpv/kXk4fuZ/8yAO0hofZ3lnlis3LbZPWgu/DwbOBT+lYPkLOaaGx63Kuvuk1bNmyBcdTcEXgT2qEY5SLGRpj7tx8umz65EoungAJBUlWSaSbiccTdUHJhaFOjJ4vHMfh0E9/yp5icdV1bOBRWaZrNkN7/sftmUPNs1MIEfxYC55PI9hiiEWk4lIcs6FJYZkR/9ONsmVzz0OPcHl1mkYFvnnkNA8/vp8PhE2aFyhbf1yBr5Xgk80QkYNGAF9ddwnvftevrTg4CAG/cODmNfz7qz7si2zkmhe/9Gn6ds9NOI5DtVLBLM2TpRoBWWos+f0FMKWN01JrrDA56dDSMq/SGRuTiEa7mRqBnsTisiwBTJfB8lWa4iFyNNDW3rlo+77v47puYJzv2HiOiefZ4NsI3wbhIuGh4CHJPlqNSFVVlnnzXQjGcpAIQ/QcF7j+aYO+Tbuf+Ac9jahWq5SyWYRtc+LAASqjo+QzGSK2TZ/rIgP9qsqEqnJNWxvTmsZOwyC+ShKgBOQkCafmD5rUdeI1f9DZsvgyQVm8pijEVRUhy5QBUfMLlVQVDAMlHieSStUVBC8wnB0Y4PGffJ3so98hPrmPS5MVei+wY9fhDBzJK1SkCPFkilgihadFQA3zHwcPYUjTvG0HXNkTKFC/fVDiB8dD/OYr+7jjZIrfe3UP6ej8QCYEfPVxlWsuaqGnaZ6ZLNtw/2CEW3ellu3D0QloaguUUpM5KJYVJoshWpsMNnWcu4GSLyBTkig5cdRoN01t6xFCUMxP4FamUSgRD7nnHH+WomhC0ZRwPQUjpJKIqhi1jGS+EhyPWEgwPGnieR4hDVwfbFemManRltY4Ox2io3fH83oyu++++9g1MnLOMvl9wJ5nYofOAZ9aiX7t5s3eyzJCkvBkmQzQpDhEhIcA4qqyLNl4UIRou/waUqnz8y2zLIvP/NqbePOD315WafO9qszmTZvZkgzkxWUBP3ENru3tJBnSeMxWUBIJdjcmF+3HqAuTqEh6iPZYhOaQRknAoOlzMJ+nUXVZbzj4Ao6bQXLspp404QVl9L6Ae804u1/6WhKJC23p98JBf/9B+vrunnt++rSMLG+nr+/GRetVKmU8737iC4QAw8NxurquWnG709PDJJPDAAyegYQKKSOI3xwfchUo2ArdjSF0RaJSK3tvWkFo4HiBSsr2wPflWq9RH9cTtdJ9gSQLFPxaMtybS4brF6CoX4rJfEBQxM8RYjyXY7inGsVikc9+5jOc2L+fWCTCzl27eNnrXkdT0zx7fM9dd3HXRz+KcuAAW6aneanvs1YucwT4rmFQff3redPv/i5KIkG4pYVoIvG8alJaxy838vkx4vESluVTKuX5/Odv5AMfWGzj8alP6Wzd+h0iRgpJho2btpA+D9sHx3E4e/YMAyf2cfzwg0yeuZuUfJrNrUWu3CxYYL19XhiYgP39MsNZg5lqA0rqIi675jYu3nMFuh5GkhXCIYVixcO2Tf7pU//Cg3d9i5gW9OmwSbDnqlfwwQ/91Xntfx1AnRg9f4wMDSE/+CDtQmAKwclKhbzrIssy6wyDDk1DIvBRueTZ3tkniPMp0ar4QTf6i56hivKK6/GzfQfpmxpkhx78vY5l8nz+Rz/jL2Lmiu857cCn8vAHKfjZnlt48+tvX7ZO3oMZJCxZYQaZsOKyJ75cCewKuM9MsPvW20imUk/lV3tewnEcqqUSZqUAdhUZDw0f27VJ9c4wOwebnHRpbCwyGw9NTUFzcw/VKkyMgnACJarvS1ieTCKi0hwLot+hkkbnus1PSp07680VdCA18V0b37URvgW+g1Sbcqr4KLI/r0ZdEoCP5yB+XsRomL5Nzz3NUSGbxcrliLsuGdNk8tQpdjsOI7bNqUqFfM13b0cyyXrDQAJGCa4M7QQT9TxQlGU8RZnzB43UfpulZfGGqpJQVVxJogxzDd4UXUeOxQilUhh1NWgdSzA+Ps7en3yT6Ye+RXj0US6O5th6gXHc6Tzsn5F5YEoj0WjzkZctD0csB37rmzrvv30zPxts5HdfsTgBY7rwtYMR3nHj4tbZ/2+/zJUbU/Q0zatSAe4dgMsvWl4aXLZgNKtQssOoisLGTv28VKCFKmQrBsLoIN2ygWQyjWmaFHKTONUpZK9ALOSec5K/FGULClUJx1PwhIKqKuQKVTZ1iEUqMCFgNAu2p6OG4rR271jT2/C5jv0PPMD2oaFzlrlfKDHqsIC0nL2XJDxJwpdl/Np4KGQZX5nN0KlBlwZVRdK0wEdZ15F1HVnTUEIhFE1DrXkqq6q6zDPRcRwef+A+MqdP0klQ6j6DRETT2ZWKoSuzXek72X31Ncv2u1qtkpuepjI5hpOZgkIOZybDPZ/4S95rji1LIn6mqnP7zi001Jry3GdJKE2t7GhKsc9TSaVT7EjGkCSoCjjrSJQVHTkcJhaL4Ydj+PEkarqJcGs7yaYmYrEYkiSRzWYZHx1BkmWy42OomUG2qRViavA/HHdljnoJtl19E+2dncu+Sx3zGBg4Qm/vnXPP+/tldP3FdHZuWrTe8PAjdHXl5p4HDhNXEYstZzKLxSyKcpxIzW5DCJiegsKUMlcymo6qJMPq3ExytATNqfOr6nH8oEuz6wHIqKqCEVIQYpY8VfGEji/VbMh8F8+zEJ4NvgMEcZyKhyL7aCpzcdxC1InReZTLZT709rcz+OijaNPTXOE4hIXgMU1juqODl7znPVRPn6byi1/QPjzMDabJljW29/+zd99hcl713cbv6bO7s71oV7vqki1ZlovcwN1ggw3GtNBLAEPooeUlQEgggRQCIYSEJICDgQChmhJabINtjHuTm2yr9+29TJ/n/WPUVt3Gssrcn+vay96ZZ2bPrGbPPM/3nPM7eeD/QiHuOfFEXvp3f0fnCSdAdTWptjaqalzOq6PL1NQE0Wg3oRCMjU3x+c9fwqc+NTxtCfxPfhImk/kir371u//gn5fP5+nr6WbDmodZ9fi9bH7iZmLpR5jfPMyZC4ssOEid0j0Nj8M9q0NsGkwwMFlHJjafE069nBOWns1ffex9LJuxgQ9clad9+8KOxzfDF34WY6i4iC9ccz0z/Rw9FAajh2rj2rVU33cfvZOTDGezLC4WaaF8Qrw2HGZLJMLZtbWsjUQ4jUMvRH40eSACpx+kqH8+gMdycMqTCEbLGyiVl7TngAJhiuEIxXCEUiRCEI2XE6lYgkgiQRCN093fR989t5PavIYLYgUKxRK92QKJSJh/vvlOPpretNfMht39vwE4/Yoree0LL2eiBINBhNFIjFHCVFdHWVQXoy4eLte1zMdYM1EkkZ9icXSCtli54PymXIS1QT2nnH8xbe1PsgerILlcju7uh5kzZ2jnbevXl+joGGXHRMDhYUilZhGLhcjnYbg7RioWJUyI5B5XY90TkEyGCEJVhBN1VNfUH9aL8yAIdpuNmqWYz1IslkPUXCZDqTDJrAMsw8qXYMtQPfMWLTlsbXwq0uk0Ez091Obz9GXLr2Vi82ZOKxQO+LjNwGA4TFU0Sn0sRlMsVt4cjn0vi6+JRMhTniWaj0QoRqNEqqpI1NeTqKsjWVV13Jag0OExNDTEPb/9Ob23/5D45jtZHOvnlOaDL70MAnj77fCVN+3/mJ4x+NLdTTR0LOKdL5xH9R6Flb95b5TXXNi1c5CkFMAv18Dzz4K13SHSU0lmNdZSlYjyYD+ce5A/+1IA/WMhBiZi5Iox2pvitDdGOdjqpnQBBsZjFMJtpJrn09TcRiQS2V5baoDcZB/h4hjV8Ry1ySe3LPXhjbC4a/8BxqYBmCw0cOLSM47pv92erVvJ3X03s7fXdN+XMeDxWIzWqiqIRilFImSy2fLmgokE1Q0NxJLJcoAZjxNJJKaFlzsCzMM9Kyqfz/O7n/+M0yd6adpjM8PhItxbjNHV1kq6oYV5J53M+MAA2f5uikODRCbHSGTT1FKkPrzrvbKhp5d7v/RP/FFkatrzTZTgf4I63nTyAmLhED0FuDOS4oxZM1kXqWJ2cyPzapP0FGAbUcarakl0zqF17gJS7R3Ub68J/WSMjY3x+AP3kZ0aA0K0dM5m4ZKlDqIdgoceuot8/l6mdvtnPPnk106bJTQ+PkokcvfOoBNgy5YmurrO2Ov5MpkM6fSDNDbuVsM/D1s2xZlZE9tnjdjhDIwXYqSSEIvkScaeXNmjUlAOSrMFCAgTjZSD0nikfI6VLZTD0iAcJxytIhavIhYrb7hUKpV27slQyOcoFdIUtw+E53NZSoX0Ac/hSgGsH0yxYNHJh97gY8zU1BTvf+ELia1YwUtHR7l0j+v6MeBNoRBXBgFv5MC7Lj8B/LyujvZ3v5vnveIVkEwSraujpqWF+FG0D4O0Qz6fJ5PZRG1tiYGBHJ/5zEv4m79ZQ9VulZNuvx3uuus9fOAD/3pY2pDNZhkd6mPrljWsfvwh1j5yM7mh+5hd38spc3KcNg+ezGlEJleuU/o/t4Q5c1GJN1269zFBAH/5rShbi+fzte/+1mX1B2cweqj6+/tZ9etf0zwxweJ91BjNArdGIqQaGnjWMXohcX8YllUfuAZof6Fcl7M1GqIQjlAMhQmiUYrRKEQTEIsRjicIJxKE41VEq5PEElXEEgni8TixWGzahVY+n2d4aJCxTRvI9mxjaMtGYiNDTPT3cnJxklChwHc29EA2y6xIiYki/O99D/KjltwBX8s9Gbjppe/kFe94N81ds6itrSUUCjE+Pk5vTw/DPVvKsyMiUTrnLaJ1xgyy2SyrVz7MSH8fhELMnLeAOfMWVMQuqH+o7u6b6OjYFbitX19Pa+sGUtuLV09MQCTSSVVVhN7uEG3R6v32Pt0T0NK4a7l9pgDpXJggXE000UBVdeoZvVhau/pRZjeO7/ckv3skQnXTQurrj66lCv3d3TRMTNCdy1GXz5d3Zu3t5cxs9oA9/wPhMF11dRRCIWrYe1l8VThMdvvt2e0zQqOpFMnGRpK1tUfVBmU6PkxMTHDPLdez5dbvE1l/GwvZyvLWYK9Nj+7thYdC8JbzDvx87/pRgkvPXcqieXNYtsfOe9c9DLXNURritZzUWce2sRCZBCybu+uYsTSs3Bxlinram6uY2VCi4SCDijtk8uU+YzQdJRGPM7c9TtVBdr3Ll2BgPEym1ESibi6t7bN29oH5fJ6xkUEyE32ECqNUxTKkDvA5PpaGoXGY27bv+6G87PXRrdWcdsZBfpFHuSAIuPv661k+Okq6WCQHpEIhktvPQQLggepqljz3uVRVVR3wuY60e279HQvWP0JTZN+n2cNFuDcfYWmsREMooPoAb6mxXIlf3XMvXT//Fuclpp/PbszD3bUzeMWCTooBXJ+NUtMxk6ChifmtLaRjCQZTjSQWn8KiM8+mtvYgBdp1WD366L0MDNzP6afn2VFtoL8fHn20jrlzn8XcueVZo1u33k5n5+TOx42OQiJxPsnk9Pd9Pp9nePhh2tqmn2P39ERobk7S113eo6A+Xt5sJF+Ewakw0ao62ju6CIVCFItFspk02fQYQWGSKFmSiWCvurIHkylAJgslwoRCYZKJCMloiFCo3CfmClDcHpaGIgli8Rqi0ehe54cHO4frHw9RiM7c2f7j0afe8x5m/fKXJDds4NX7uaafAj4AfHkf900C/xuJsPbcc3ntJz9J/YwZFGMxEo2NVB1iyQ7pSBke3kxjY4bh4QL/8i/v493vvoHW3UrorVoF3/rWC/jkJ//3GRkMDoKgPHlltJ/RoW2sWbOKlStuZXTr72lPbuakrinOXgTVBxlfLJXgnV+CL793/8eks/DGf6nnr/7lZpadctrT+jqOQ4f0AWAqBDQ0NDCeyXDefjZeSgBnFIvcmsvx8MKFRCOR8lc0SiQcZsf0kCf9kbuvD+k/9IN7z8eHQoSAxNgo3f1bmB3Z92sE2BSrpvXUUxidmiJRXU1HR8chfyCWSiVGhoYY2bKJXPcWIqODpHJposUC4yPj1OSmqB2fgNFBnhUP2JrL8dVVW/hAdZZV6QlWrulh5sAEs5IHz9/rwlDbPpN5J00vpl5bW1s+kV+0aK/HJJNJli0/65Bei3aZmpqkoWFXKJrPQyo1m3x+w87bolHI5Urk8xHqSe7376BIefn27rXKklFIRndUr5xgagQmClGI1hCraiCRqDqsJ2Uzu+azYeMTzG7OTNs9OghgYCJCMdJy1IWiAEEuR7pYpLZUYjifpwvI1dSwKZdjzn5OjMeAaDRaXhofj1MVj1MXCpFne23RSIShWIxofT3Vzc3UVh3e370EkEqluOSFL4MXvgwoz2i6645b2HjTdwnW/I7Z+Q2c1Vpi8yQsXHDw5wuTZdXWEWgI2DhSz7PntdFcW/7jnszDi04pEIsMs753mMd743S115EvpHbOIq2rgmedUAAG2TIYYuXGFKGaGdTFoTaapb1x781ldkjGYF5rkXJvl2VwAjaMRsmXorQ2JWlriBHZo4OMhaGjvgQMAAMMrL+P8VyKaM1sWmbMo7m1HVrbgXKwMTE+Qnq8F3IjxKNpIhSJRKA6GWFkEloOUq4xFoFE/NgPCEKhEFVNTVy/aRMdxSKJIGB1KEQhEmFxKkVPTQ0zli17RkPRHasTcrkcue0z+YtTUxTTaQpTU5SyWYJsFrZvnhnK5yGXY6SQoal6V79dKMHmTI5sMaA+FqY9ESNRKtIa3jsULwawLZ1jYGKKaD7HPbf8hosfvY35e4xh3ZmB4qx5vKKtkSfycE+yidb5c4l3zSaxYDGh085k4ew5nHCMDv4fb9aufQx4kIsumj4jurUVLrpojLvu+j3V1SlisSgtLZPTjpmYaKe+fu/3/eDgGtrb9wxFQzQ3J4nFoHM2DA3B4FQ9QVAinkjSPrt52nlAJBKhuiZFdU15ZDwIArLZLMPpMYLsOCEyJGMlqg5y6lA+94PyWWGJfLHA+CQUghAhIsRjYaoTBaKhAjBFPj9MPgPpYoSAGKFIkmiimhkdc9i0dTWzm7N7haNjUzCRidHUmKO3ZwvNLe3H3TlNLpdj8sEHuauvj387wESnamAR5RmhO5bQ3wPc2N7O2R/7GJdfdBHFaJRQMkm8uZnq2tpjekWBKsP4+DCpVIZ0usQPfvBVXve66aFoXx9cc82p/M3f/OgZez+HQiGqq6uprp5DW8cc5i8+m/MveQnpyQEyE0Ns2rKFr993Oz1rbqY+vGpnndK2hunPc/8aeNaB6l1QLiXS2Zjm5ht/bDD6NDEYBbZu2sSiYvGAxzQC9ePjLHngAcoVcMpLx/NAIRKhsL32VCkapRSNEkSjEItBPA7xOKFEorxUK5kknEwSqaoiWlVFIpEgFovt/DpcS7Zmlkrc9/sMDeP91IX3/vC8azzPcH6Qmlv+j/pSjqlQhNuTdTTOnc+ys86ZNtIaBAHjY2MMbtlEdttmwsMD1GQmqQsKjA6OMJrOkAlFaI6GmBcqMLNQ4PGeXs6J5EluXzX92QfWcOrmDdzcO8alxRI7IsvrCuVQ6kD58MORak44fe8lQnr6jY5upmO3SgMjIyEaGpoZGdl1WzQK4+MBkxMJ2pL7/+AZTh98hKw6AdWJAjBKvjhKZhjGS3FC0RTJ6kaSVVVP66h/VVUVs+Yuprd7M8XCJPFokVIpRK4Uo75hBl2tB5h6dSQFARPFIq3ACOVZHrNSKe6YmiKUzdIVBNM2JRkE1sZinF5Tw6pIhJmJBAORCMVEgnhDA7UtLdQnk54I64hLJpOcd8nzOe+S8oZ4hUKBFffeyf1f/Swnj/3soI8PReBdL1rHL++LEqppozc/wm0P1bCwZQZEkzsvnufNgHkzcpSCAR5fN8DARJIZLfUsmlW1czlyV3NAV/M4+dI4a3qiDMaWki0uozSxjVBmC43VE7QeYFJdcwqaU+XtdvLFDFu7Q4ymoySTcTqak6T20V+2pAJaGAceZaznUfonk5SSHTS2LqSuvoHGplZStQ2semwFmclxahMZgiBgeCJEqRShYcHBg8BjPxaF+269lbrHH+cFudy015MrFrllYoKFZ51F55w5h/x8OwPNXI58Lkd+aor81BTFqSlKmQylTKYcaubzkM0SyucJFwqECwWipRLRUolYqUSM8mB6NRy0/inAMJDd/rkYBHDX0Dh9kxnmhgpUhQI2BWHuDKI0pFKMJpK0RGCyWGLjeJrMVJraIMecKISmcvz397/PeyY3UbvHD74uHeHUxScws6aK/8kmKJx8BsuufBkLlp/prNCjUBAEbNr0MJdcsu9a+6EQnHHGFHfccQ8LFjSy+94bQ0MhWlv3vpru799Ec/PotNuGhqCxsWpn/fhMBkKhdmZ2HWDH0r3aEiKZTG4vr1A+X8rlcoxNTVDIjRIqZYhHCiTj7DUotLtYBGLVUJ7rXShv6JTeu05pdWzHwFOGfHGEQgHq61JsGIBoqEAqWaRYCjGeCRONRulorSEZK5EsZhge7KOt/fiqxbd161aW5XLcWyhwsKvHS4Hrgd8nEky95CW86n3v4+2pFKFYjKC6muqWFqqqD3F5hHSEZbMZotEBAG666XcsW/bP0+ZFpdPwuc/N4v/9vxuO6CawkUiE2rp6auvqgQV0zD2NpaddQH7qrZRyYwwPD/Pr+x5g3R3Xk8g+wvzmQZbPLzI0ATMOYV5OUypgcnzssL+OSmEwCkyOjtJ+kGAUIEz5FxYFpl16FIvlL4DcgZeB7ylLOVxNU94IpRAOU9w+66EYiRBsr4tFLLYzaA3F44STyfKS9h0hazJJLJncuaR9x9fOtofDnPbs81h5372ERwbpKkwRD8F4EObhdIHWzBSXR3LlFxkGKLIgP8ymVQ9x++g4s2bPYmrbRkID/VSlJ2gOFZm3/ZouCOD/1m+iu3+QU8kwLxIwUAjxUCnKI6Ewl8WyXBSFzWMT3Hr3SsJPbOLj2Rz7Kgt0Zr48s+HZ+7m2CwK4oXk+//H8ytpF/kgJgv5p3+dytYyMbKFYDLGjukY0CoODAQsWROnpLs92qY3vuvjOBzCSgVwpSn0szPBkiYACsQgkE/tfFhoLQSwJ5SGIIfLZIcbHoECSUKKe6ur6p2VpdzKZZPa8RTs3dQqHw0f9piRBOEzA9A48BCxvbWXF8DC9mQyxUokwkA2HaYhGOb2qik2hEMmODqrnz6fRZfE6BkSjUc581vmcsvxs3vjcel61fN9hAZQ3Ioomoa4GXn1hAdjGjSu6GR1rINw1Sl20hrsfbeHMk+p3hp/hEJw0CyBDNp/hwZVhJnJJ5nY2MKut3A/EwrBkZgF4kNHJB1k/2ECs+WwSc05nQ/9m0kOrSNJPe0N+vzOlYhGY3RLA9qHVsfQkq3oj5EsRGmqraGuK77UDeV0S6pIZYD2ZsfVs3RojSws9AxMs6xqnbo8P0ZGpAg+tLXLOktR+l5bmAwgOKbI7evV2dxNZtYpF+zjfigMX53LceNttFAcHCbLZXaHm9mAzlM8TLhaJFgpEisVyqBkEJIAkUAcHDRkOh9/0jTK7kOZZyd1X9pQIghy/GR/ljskJZoVLzAwVOGn7yej68QzXb+1m8/U/588j49M2mygG8LVsgledciKPBjFuWfZcXv9XnzrqP98q3eDgIC0t4wc8JhaDUGiQpqYE7DYMms3Ooqlp+r/v2NgQqdQ2dp8sOTEB8XiSRKLcEebzMDZWTVvboYei+xOPx4nHm4Cm7c+dZyo9RSE7CsUpouGD1ymNTdtsqUQxKJHN5pnYo05pVQyqYhCPpigWS4yM54iEA2Y0hgiFYWQ8S7EYprkhRiycJZNOkzzKS2scTvc9//l88bOfpRAOE4nHIZWiqqnJ+qE6phSLRTKZburq4MEHN5DPv4NnP3vX/aUS/P3fN/DGN/6E1tY/vE97OsViMRobW6CxfALXODPLjFnLKFx+JaFggkIuyz0rnuC7v/g6pzXdwQvOOvBK2i2DIV700nOeiaZXBINRIF5dTTocLv8lHcDhKLKa2P610442HEJQu6fdZ7JOAvlQqBy0bt89tRQOk4zFKEUibCyVyrusxuOEJ8Y5Lb7vQHcWeZ5Y9QgrVtxJJIB4OMypjSlqtm93GwTwrYdXs3RqkMt3q2c1JxpwBnluGM7wzTueoGv1Oi6eTPPag7yG5wXw7gH4cgfM3Me783PhVl74gT93ZtszIJvNkkrtGUK0UFPTy/Bw+cQ6k4FkEmprw8RiMLMTxkZhwyBEwmEi4QhEEtQ1NNNSW0smk6GYHiFUmiIZL5HNlZjIF4ASiWh5xuj+7JpRkAEyZCZ7GR7eUZ+0nqrq2j9omdSegwlHs2RtLVOTk6RLJSKUfyNJIBkKcUpDA+syGeq2zyiNUh50WZVM0jRvHh1dXUey6dJT8o1vvJFzrshw/Rp43sK97w8C+PvfwptfOP32S08LgGEe3zzM8LZqZtR08pvb6yHWxAWnN5PcbWQmEYPT55eAKcbTU9z5YIRiqJoT59bTUlf+QKqvhtOqR4Dr2fTIjQxlO2mcczGz51zF6MgQW7Y9TjG9kYbEGG11wX43Tqqrgrqq8uynfJCjrx9GpiLE4wlaG5I01ExPDZJR6GrM8/CmbpZ1lR+/p4bqgKVdeVZtnmLp3H3P/OkfjdIyY9a+G3WMWHX//Zyd2X9AHgPmTUxQde+9HO3zw1KUa4h2p/NUZTOckNz7PDQUgkurinx7MM1P772Tx9esA6C1oY4Xz51J9s7f8c6q6RvvjRbhB5F6XnTqfP531jKu+sd/49nODj0mpNNpamr2v6nYDslknmKxxI5gtK8vQkvL/GnHZDJpgmD1tI1IcjnI5eI0Ne3qY4aHw7S0zHta2r+n8rlVPVAPlFcBZLMZJtKjBIUpoqEMVfEDB6WR0I4VRbBj+X0mn2d4qhyUprNhisUCM1sgsdvU1Nok5IslekayNNfD+MTocRWMdnV18XAySSYapZDNHvCi/qfV1bzsLW+B6mqidXXWD9Uxa2Kin1SqwObNo9x555W84x3TPze/8IUkZ5/9r5x88vIj1MJDl0gkSLR2AOXlmcPDg5x2RjMNTV38w8dfy/8LRva7inZ0EjYO1fK8F7z0mWvwcc5gFJg9bx5333svXaOj+z1mEiiGQnQHAVHKYWaM8i/waPlYiW3/2nk5FAS7ZrPuZ+fWR8Iwp2bfzzdZLHH9tmG6yHNhvEQiBJMluL8/y13hGLOTUcZGR0mND7O8alenNJzJ8717HiNYuZYLJ9N87CDtHgdujIaZbG/g7EUz+FZVnL98cD3JdI4/jmeoDcMDoSS/aJrPCz/4Ea567euf3C9GT8nIyDZmzNj9e4jFhhgbS7NxIzQ2QlUVDAzA0NAA4XCYjo46iqU4XXPn7/OEq6qqiqqqKoIgIJNJUyyMEI2lScbL75+xbJFCoUiIElWJHTWo9m1/9UmDSLk+aTJ5/NbIrE6lmKqpYXh0lNZ4nN5MZmdt0epwmKXV1YwUi2zN5ykFAZnqapYsX37c/j50fPve9z7GK1/5Perq4BMfgkfvgLecBjvK6K3th7++MU6oOcX6gVGWzC7urBm6w+JZsHjWFCMTq/nlfVFq62fwwIMz2DZex0XL22ipn/6A2ip41glFYJz+sXFuWxslmkhx8vw6arYvgZ/dXGI2m8ml/5tVv0uQiS9h7pJLaGy6gHw+z9ZtG5gcfIJYsZsZdTlS+xn4iYWgsxE6G4vAFJO5KdZuCpMrRampStDenCAeDZEPyh/ldVWwdSDP2q1ThCgBASUizOuoYlZrnMe2lMgX9w4ahibCjBeaOKF1xr6aceyYnORg85u6KNfTeyaD0dxuX1l2K7O0fSO74vYSS7lwmKkgIF8oQCZDbmCAm6fGeEmqxHCuyC19I4xlyiUCQpEIZzTW8q077uGB++7jnckMH68KiIRg3cA2vrT2cTojTFvGtDYPK+pn0jl/EcN/8Vled6b11Y8lNTU1bNkSp7yWbP+y2RCJRLkvKhSgVJo37TM+n88zPr6S1tZd0zqKRRgaitDevuu44WGoq1vwjE04iEajRKMpanarU5rJbA9Kc5OEyFAVLx3w/A/KNZ2TMYASPfkSTSlI7CNcjUWgvQH6RvPEkk9+0snRLBaL0fysZ7F482a+t2EDr9tPndFJYMWMGbzx5JNJzZvn5BIds9LpCZLJcSYmcnzzm8/j4x+fPrHrm9+MUl39Aa688tjMChobm2lsbCYar2P+SRfzqe/9gr969d4ZTrEIf/qVOJdd9U43xn0auSv9dvfccgtdjz1Gxx4zNXe86N/X1nLqS15CbW0thUJhZy2qQj5fLrCfTlPc/t8gl9tVZD+f3/kVKRSgWCRaLBIpFolsX761I9CMb/96Jv0+Auel9q7pWQzgus39nB/KkC8WGc8WyGTz5LIFCvkihVyRUr7I6qDAlbVFNg6Nc/vDa4mv38w5k1M86yA/Nwv8Nhyir7WWZYvaOb2pZlrtyEIAf1F3AvOWnkx6fJwTzzib57/4xYetBqv2tnXrHXR2Tuz8ftOmKFBgamqUE08sTXvPBAGsWhUlCFpZsOBZTyqAK+/gN0k+M0q4lCaZCIiFIFuETKZAsVQiEipRnTjwjILd5YPyqslcsVyfNFFTDkoP5WSwUCgQBAGRSOSoPnnM5/N0b9xITTpNqVAgk8vRHkxfJJsBtiSTzDzhBKqtHaVj0PXXX8PSpW+jc7eE64Yb4N//oYbWmiTxZIgZC5r4k/efTF1dkvvuq2ViYDMD9/+e5580Rmv9vp+3WIQbVoQYTDdxwoIOVvc1sGxRK8sOUqNzYz9s7I9TW1vH0vkp4ntcvA9PwYaBBuKt57BwyTk7T1jHxsbo3bqS4sQGaqPDtDWU9ltGZE99ozA0GSFfilMKJcllM1THspzQtes58gGs3RZmeCpOY1MTmVA7tYk81fEcpVKE0UyCmrpWZs155gKQw+XW73+fC/r7D3jMBOVg9FCrkWfYFWrmQyHy4TDFSIRCJAI7Qs3dasaHdi9lVF1NtLqaeDJJNBolm80yOTpKpqeHbH8/wdAQofFxYpOTJHM56opFGpg+qP6LKHSUJnmkf5grEgVat7+vJovwgfvXkF35IF9tyLKvfbN+OFGedfq2erg1E2KgcwHJV72Vy977IaJR5z8ci2666QdcfHHffmcK5XJw113VXHBBeQVId3eUtrYLd54jB0FAb+9K2tunL8nv7g7R1lbNjlPpqSnIZjvKSzuPIrlcjszkGIX8OKFShsT2OqX7moFfDKBnCDqbD/yc3SMQSbbQ1tZx4AOPMZlMhg+99KWE77qLF4yMcMUe1/XDwJubmvjoN75B19KldM47PDODpcMtn8+TyWwikSjyqU9dxSc/+QS7xwK//nWI++9/FR/72P8cuUY+TfL5PKseW8E//+NfMbHtFj54VZqzTywvLP7lPSH+7ZdJTr3gDXz6H/7NSS+H5pDOuA1GtysWi9x5ww3UbdlCy+QkD46Pk98+y3IiEiE1bx4XvfjF1NUdZMvXJ2nHLqY7Cv/ns1kKmQyFdJpSOk0plyvXxyqvfSl/FQo7a2SFCwUipRKR7cX/4+wKWWPsXScrAKaKRQazWYYyGR7LZGgrZihlspDLE80VSOQLVJWKpEoBOxa/7D4W0ZvP88T4OMPj42zo6yPe3c0JExNcxIGnIJeAW4ENNTXcOXMGn1tcT81+1hn+qlRF3Qc+xXmXXPLUfrH6g5RnGtxMU9Ou2zZtijI4OMLpp+9/idcDD1SxZMllT7nQdalUIpOeIp8dJcIUiVh5NlUQQKYQkMkWCYIi0UhA1UFqVE17PUVI56AQJAnFa6mqbtirjRMTE4wO90OQJRyCUhAiHKmiqWXGUT0a19/TQ3p4mHgux2QuB6US4e11ihMNDczo6jqq2y/tzz33/B+p1OUsWbLrttFR+MY3ZrJs2YVccsmugK9YhN/9rppLLilvAPLQQ1Gy6QkeueGnLG9ay6kHuBZ8aD3ct76GExZ00jvVSiHUzIvPT5E4wLlmKYBVW6FvPElbSz0n7LZp0w6bBsIM5GbTPPciZs9dtHPwL5/P09/XzVjfSiL5blpSUzQe4rjFo5shHoVF+7m239QfYv1gHaefexWxWIx0Ok0kEiGVSh03A4u3/uIXnLNhw86B5DwwXiwSAuojEcLASmAyHqc+maS050aYiQThqirCySTRmhpiVVUkkklisRiJRIJoNLrPTf7Kg3hpRoeHmejrI9PbS2FwEEZGiI6PE89kqMnnqQee7KL1bxdzxEb7eGX19CXxN/SM8OPb7+ajwQCzDvB+fFcfnFcTJvOs53LFv1zDzFmzn2QLdDRZtepRJid/x+mn711aIQjg9ttjnHhiBy0tSfJ5GBk5idbWXaNH/f0baGjomVZXdGAA6uqqicd31RUdHk7R1nb0B2X5fJ5MepJCdgwKU0S3b+YaC0OuCMPjMKPhwM8xPAkku2jcfbeq48TExAT/+IEP8PANNxDu62N5Pk91EPBAPE5u8WI+/pnPUNfVRcvs2VTX7GeZoHSUGx7eTH19hn/8x/fxnvf8ilRq13333Qc/+9lFfPzjNxw3QeHY6Aj93etYt+4JvnHtV+nbuopSAHNPPIf3vf/PmDt/KbVPcy51HDMYfSruv/NONl5/Pc/PZtn9OmUU+G1LC+e95jW0tbcftp+fz+d3hqW5XK4cmuZyFNNpCrvNTC1ls7tmpuZyFLJZpiYmmJqcpDAxQZBOE8pmieZyxItF4sUiyVKJVKlEHeWwM3WwxlAOMzdkMqwbHyczOUldNktpfJyNvb00j43x3CDgYNV67gNWJJNMdnYy65xzqDv/fJInncSNX/on/iy7lZo93qp3BUnuOvVi3vvXn35adyDXoRsY6Kax8ZGdI3ETE7B5c5H29jEOdE45Ogrd3SeyePGpf3AbCoUC2cwUhcwokXCGZAyi298OxQAy2RK5fLlGXywK1fuZTbAv2SKks2FKoSSReD35YolCepDm2sK0DVByRegdjdEyYw5VR3FdqkKhwNT4OLl8nkg0Sk0qRSwW8+9Hx6zVqx+mv/80zj13VzCQy8GXv9xIR8fz+aM/mj7r8Te/SXDJJR2Ew7B+fYi6ulaam8tDdQP943zvP3/O3NDdXH5anv3lgwOj8OsHYtQ3thNPdbFlcg5nnBDmlLkH7ltyBXh0c4iJbBVzZtYzqy0xbaZXtgBrehPkkkuZu+Q5e12YT05O0rt1FdnRNdSEB2lvKBLfRxuDAG5+BC4+ee9VHrv71QNxLr3yTcfNxcGeerq76f3lLzkxneaOsTHGs1lagoBSKMRgKERTMklm7lwufdWrnlQfWB4QHGd0cJB0dze5PWZ7VuXz1O5jtufT4QuDfby9eoqqPZr7949sZOMD9/Kf9dkDPv66CXj8NX/KR//pC/b7x4GtW1czPn4H/f1TLFlSpKWl/Pe/bVuYlSujLFnSQldXavuxSWbOPH/nv/voaD/x+NppdUUnJiAUSlKzW+3inp4ora0nHJMDJvl8nlw2Sy49SqEwQSGXo+MgeefQJMRr55FKHcrVz7FnbHiYyZ4e1q5fz5Zt22hvaGDOrFlEUylikQjh+npa29vtH3RMGh8fJpkc4L//+z+54orP07Hb4PC6dfC1r53Mhz70u+Nu4COdTtPfs4ViYZIQAQEhIrEaWmd0HdXXpUehQ+r4XGOzm3Q6zcbbbuMl2exev7164MqBAX7y/e9z6RvewBMrV/LgDTcQGx6GQoF0IkHrwoUsXrSIUKGwc5ZnkMuVh2V3/LdQIFwolGd7bv+KFovlHe+LRaJBQBx21jENikXyxSJThQLpfJ58oUBhe93QSLFIrFSiqlSicXsb/9DdVPNBwONTU2wdH6c4NUVrLsdJAJkMt/f0kBkd5dJikYsP8jyrgFsSCQY6O2g75QRmX/0eLrvyRdOOmbtgAf/xz58lsXktc7PjTIWjrK5tZfEll/HeN73FD+8jKJvdMi08GB8PkcnkDhiKAtTXw7p1I09LG6LRKNFUHaTqyrMFsmmKmRGi4SxVMahJhrfX+ouRL8HEbvVJkzGoOkBdikQEEtXlTVYyhSkmJqCzae/j4hFob8jT3buFWXMWHrXvyWg0St1xdjKgytXTs5VVq87mhS+cPlvqy1+uIZXaOxS99dYo559fDkUHBgCadoaiAJlsHW9437upqnoXv/rJbxh9+Me84ORhGveY1tdSD6+/OE+huJlf37eVqvxqRnpn8e1Np9JQX8cpnYPMad17jDgehdPnBcAUk5kp7n44QiGo5oS59bTWR0lEYWlnFrif4fX388B9TSRaz2HB4rNIJBLU1NQw/4TTgdMplUoMDPQy3P04ocxmGqvHad3ezoks1NccOBQFaG8IGB8fp6lpH53acaC9o4MN8+fzo1tv5XnZLHvuObupUOCu0VGKxeLOpeRBEDA1NcXoyAiTvb3TZntGJiZIZDKkts/2PNzz5yYoL2/dVCoxlMsRSadJ5NJUbZ/IFQSwcnSSX9z9OOF1GwmT3bFvzX4tiMHonLlH7WeUnpxcbhuLFyeZOzfOE0+keeABSCZbiMViXHxxiNj2EdxsgWOZZQABAABJREFUFqqrF+/8d0+npwiF1k0LRbNZyOUS0zZbGhqCxsZ5x2QoCrs2y6zZHnJu3rSaIMgcsG9M5+PUHserZ+oaGwmFwyysqWHpokXljiQUIh+LEa2upqGlxf5Bx6RsNkskMsBvfnMj55wzPRQdHoavf302r3nNt4+7UBTKe3PMnrcIKK+qPNZLIR3tnDG6m9tvuIF5t9xCxwF+Jw8D9w8P0z4xwXOKxZ2zBgLK9axuTSZ5Y3v7fjcGCIB0EDBaLDKaz5MuFMhuDzwplQgXCkSDgGSpRHUQ0ED5fPhw1R6dKJV4bHKSvrExIuk0nYUCiynPhujN5bilr4/S0BAXFgrMPMhzbQOuT8QZnT+LF527lPn1KfIBXFPVydv++u/2W+tqfHycbdu2kUgkmDNnjh/cR1j5wvwm2tp2hRLbtsXo7R3j9NP3vxPwDg88MIPTT7/osLUvn8+TzUxRzI4Si2Sp3sfUnVwR0tkixWKRSKi8kdO+ZmAB9IxAYwoSBxgmGpoME0vNorbWJQvS4TQ+PsbPfjaP171uaNrtX/lKgmLxKt75zul/8A88EGbBgk7q6iKk07B6dS2nnLIr8RwYgFKpgba2XY9bty7MYN8mHv71V3lWx+OcdIBVx/evgYc2p+ia1clE7CyC+rNoi63lhLYBWg/SHQyMwxNbo0RiKZYuqKO2avoJ7Yb+CEP5WbTMu3i/Ay+ZTIburWvJDK2imOmjVCpwypwD/9zHtsVpXvhi2traDnzgMez6H/yAs1asYH+XQRtDIe6vr2deJEJscpLqXI7aUol6Du+GmXnKK4zGw2Gm4nHyNTWUamuZSCSYnJwk3N9PTV8fzWNjzC4WqaG8Muc7CTgjNMWv7l9DeM0GTp+Y4ALK+42/Jwn/1nXgn/vzdBi++H2ufNnLD+Or0zNl06afMHv2rk1FNmyYR3v7yeRyv2f3lZNbt9bQ2XkuUD43Ghl5kNbWXeUYCgXo74/Q0bGrdNDEBBSLHdTXH111Rf8Qw0P9hHN91FfvXXoAyqWURvMNtHfMeoZb9swLgoD01BSFXI5QNEpye5kQ6VhULBaZmNjE2rUPMTr6Ui65ZFdGk83CZz/bwhln/AtXXPHaI9hKHQOcMfpkDW3YwLkHCYqDdJq28XGeX5r+4RsCFgN1mQxf7+7m9Koq8oUCpUKB0I6ZoNtnd9YBDcCRKP/dn8+zYmKCsYkJUpkMC4tFdt+vdKxY5Bf9/UwMDHB2LscrD/J8I8Cvq6tZOX8OL1u+kDe17LogHSzCdckZXPm2dx1wA4Da2lpOPPHEP+Rl6Wk0NjZCY+Ou93c2C7W1caamkgwMZGg5wLn08HCIVOogFfD/QOWZAvVQW19e+pieoJQbnxaSxiMQr46wY/50Jh8wPLW9PmkooGq3jZyKxQOHogC1yRID46MGo9JhlM/n+c53lvP2t08PRf/nf6Jks8/j7W+ffnG3ejV0dLRTVxehWIQVK6p49rN3fQZNTMD4eC3z5u16XHd3iJkza5k1axldc/6TcGiC//7ul2ibupHLTs2z52D88oWwfOEEvcNPcP2D66mtv5Xh+pNYUfV6klNpYhN3s7Rrgtp9lFVuqYWWxQVghM39I6wYiJGqqeekBSkSUZjbWmQuG8hOfp2VNyXJV53M3MUX09DYSLFY5OEH72X9qgeIhyeBELlSNQQBy2aHDjgzanQqwdzaJ1vl8tiRzWbJb9my31AUYE4QcP/ICKdyiGfDh2iCcvA5EYuRTSYpplJQX0+0pYVEWxs17e1EIhHG165l/MEHCdato66/n1MKBRr2eK4AWDk5yW83biSzfj3rxsZ4VxCw51upMQ89BWg/wOfUzxvn8i8vvPJpfKU6EsbGxli37hHy+RyDg+XSuHPmQE1NF4ODK6dtQjc1BXV1S4FyGDY4+Djt7dNr1Pb3R5gxY9c7KpuFqakUbW3HTygK0NDYQs+2NKXJceqrS9NKn0xkYDhTTXvH4SuDdjQJhULlOqLWEtVxYGJikJGRbaxe/Qpe9arpGc0Xv5hi5sy3G4rqaWMwuptDOXm+b3SU15f2PSIJMBOoyWZZls0etPbm0ylDOaQcAyajUaaiUTLxONuAqdFRagYH6RwdZUk+z2V7PDZbKnHT0BC9fX2cnMnwkoP8rDRwYyzKylNP5QX/8Z+86owzGBwc5KYf/4gHNq4jWshTiMWpn7+IP3rJy47Lqe3Hs8nJLTQ07Pp+eBja28PEYikeemiS5ub8Pi/KgwDWravm5JMXPWNtLYekjUDjrpA0O0Y8mqNqtwwlGQuRjEWBKKUAMvkSE5NFCqUi+/9r3sOhz66X9CQFQcBXv3oJ73rX2mm3//KXIUZGLuT1r68lvtvSiW3bIByeQXt7+ca7745z9tm7PmuyWdi4sZqlS3eFAqOjkEymiETC9PREmTUrASR4w/v/iq1bP8qPf3sbudVf4IWn9lK3x2ZIMxrhDRfnyOU38st7NzPafR/1rQtIzH4NPU2XsmLV/5HKP8RJXdl9bto0qxVmteaBAR7fMEDfWIKWxnpOnFO9fal9hu7BO/nZN3/NVLZELg/RCFx4ai1L51URCkExGOSh9VF+fVecy89p2Gc/nCtCPtJ4XNee6u3tZdbY2EGPa6IcZB5qRLyv2Z5BbS2hxkbibW1UtbdT39JCW20tndtnYKXTaTY+8QRDDzzAyO9+R6q3l5nZLKfs52cEwMqpKe7csoXh9euZNzLCG4rFA66U/5MifLwXvjwTIvv4N/95JsqSV7/KTfaOcY8/voJicRMnnpjZuRR+YgJWrYJUaoCZM6cPGA0NNdDVVX7n9PdvoLl5ctr9/f3Q0pLYOdhTKMDwcJTm5oNMPz4GhUIh2mfOYmRkmK2jg4Qpb8ZWJEJVVT3tHY3OmpSOMen0JLlcDz/72Qt573unb/z75S/HicdfzFve8ukj1Dodj1xKv5v/++53ueDhh9nf5rAl4BtbtvDmQmE/R5Q9BBSB0//A9uQpB52jwEQ0SjaZJFddTam2FhoaiDY1kWhro6qjg9qWFmpSKbauX8/WG26gcO+9NG/axNJCYZ8XBcUg4LbRUdb39jJvcpLzKS/Z2p8CcEskzKZ5swg950Lqn3URL3jt6z0RPw51d99ER8eu9/jWrVE6O6vo6YlQLOYYGupj8eL8tN1O83lYtSpJQ8MyOjuP/A6n+XyedHqcIDtGPJqfFpLuPKZU3sk0X8jRVlc64A73YxkoxmbS2Hh4Z8NKleq//uu1vOEN/zMt/LzjDnj00TO57LJFzJmzKxEaGYENG5o57bTyp9uKFVEWL24hmSx/ihWL8OCDSZYv3/Xpl83CwEAVHR1JNm2KMmdO1c5gcWICcrm5NDW1EwQB99z5W1Ze/2HO7byfE3abobWnux6Hx7praWqdS2jG5Zx12QcYHeml94mf0xJdzeLOwgE3bcoXYeWmEKOZKkYmI2SzaZ6/vEBd1a7773wizIaBJK+9rI3I9g/pRzaFSZfqOOvE6Wcr+QB+/3gdpz3ryuN6QHLTpk2MXnsty3K5Ax73O+A0yrXXoRySjgCTO2Z71taWZ3s2N5OcMYOaGTOob2igurp6n2UN8vk8m9evp++++8g9/jhV27bRPjXFTA5c270EPDI5yYM9PfRt2EDH4CAXH0J5ok3ADYk462Z3MF4dZ3TLJt5eleXZiXKd2b4CfCGTIHTla/j0V75mGaJj2Pr1q4hEHmX27Pw+73/44TDt7TW0tpbns4yPQyRyHtXV1QwP91NVtZbkblONy/cnqa7e9c7s74fa2oUkk8fvoMkOxWKRIAgOuFpN0tGrvBnieq655oV8+MNrpt33gx9E2Lz5Mt773p854KFD5a70T1ZvTw+rvvY1Lpic3Of9eeAb27bx1oOcjD9G+QT8rP3cvyPsHItESMfj5KuqyFVXE25sJNzURLy1leSMGaTa22lobCS1fYfpPU1NTfHoXXfRf8MNhB56iJm9vSwplfZbjzQIAh6YmODh3l5mjI/znO0bPR3IneEwDy5ZwtgF53HCGcuJ16RY+uzzmGUt0OPS5OQE4fAdO2cr5PMwMVENRKiuriaRCLF1a5pt2yZJJCapqiqSyUTI5WqYPXspra1HX027fD5PemqUIDdOIloguf1PaSxNeYOpUompbG7nBid7CgLYMhKnfeZ8P4Clw+D73/8LLr/876bVzlu5Eu666yROOeUUzjhj17BdJgP33VfHeeeVNxZavz5EQ0MbjY27AoD7749z2mn105bFr10bY8GCFOvXR5g9u3rn5nL5PHR31zB79rK92rV1y2Z+873/R1fhOp5zyr4DC4AtA/CbhxJU1c0k2XYeJ1zwQRYsOpmVK25jdNP/Mat2M/Pa9n8KtbobHtsEV52z//sf767jRdtfcxDAf99azSkntjOnuVz3ectQkoHJOk4582KaW/bcjuj4kk6nufnf/50rhoYOeNx343FOPPlkkm1tJNvbaWhp2e/51J6KxSLbtm6l5/77yaxcSWzzZlrGx5kTBIdUo7QIPDwxwRP9/WzbtInmgQHOyWY5WNGgIeBX0SiD8zt54Xmnkq9t4I7qFlInnca6B+7hkVtvYbxnG+FwmJq5C/jIv3+VpUuXHkKLdLQKgoB7772es84a3e8x+Tw89FCMM87YsRN9K52dpzE1NUGh8Mi0vjOTgampBE1Nu0LBsTEIguOrrqik49fQ0Ca++c038+53/3baRJybbgpx333ncPXVvzyuB4D1tLPG6JM1o72dh5YsYfVDD7FoH+Hng9XVpGtrYXDwgM+zBoimUvy+ro6gro5wY2O5/tSMGdS0t1Pf3ExrXR2JsTF+9KUvMfLIIyQzGXLxOIlFi3jJZZcxd97es+4GBwd57OabGbn5ZhKPPcbc4WHO4MAzPQFWpdPc3dNDanSU55ZKLD/I8Y8C9y9eTMM73sFz3vpWnmWdmooxOrqZmbtNYxkZgbq6CFNTCRKJEOk01NcvprOzjmw2SzabJR6Pk0zuo8DeUSIWixGrbwFayOfzjE2MQGGCbKFAQwJi4TBjU2HG0qWdM7V2CALoGYW6ujZDUekwuP76r3L++X+3x4YicPfdc+nqWjYtFC0W4fbbq7nkknJA2N8P0WjTtFD00UfjnHzy9FB0/fows2en2LQpRFfXrlAUYNu2CIlEwz7b1tk1izd+6Luk02mu+8Hnya/5Z648fZCaPbq7rhb44+dkyeTW84t7NnL3t29gZeuptJ/6Ts57yafJZDLcc/8N5HpvZmFrPzP2WDd9+0p47cX7/x0t6oDbHkuTL0AsWp4tOKslQtPcS9ky3AcBzDhxFsvaKqOGXlVVFcycyfjQ0M4VMXlgpFAgEgrRGInQEw7TefbZnH7FFQd9viAIGOjvZ8uDDzLx0ENENm6kcWSEOcUiT2arlgLlMHTtwAA9W7dS09fHsnSaVx3kcVPA9dEoWy++mAv/4R84s7qah35/C3fn83QtWsxrL7ywvDrnDW94Eq3RsWJkZISmpqkDHhOLQTRaJJ8PmJgI0dKyhHw+z9TUY9Pqvufz5eXyHR27Lu/SachmU7S2GopKOvqNjw/z059+mje9aXoo+vDDcO+9J3HFFf9uKKrDwmB0D5e+5CXcUVPDYytXsmh4mFShwHA8zrqmJuaddRYLN25k089+xv42sS0AfQsXcvVf//UBf86aJ57gfz78Yd65ZQu7n6qMb9rENY88wnkf+Qjts2ez5oYbmLr9dlJr13Li9iXvh2JrNsvvensJjYzwnEKB1x/k+I3AbbNmEX/Tm7jkT/+UNxxohx0dt4rFnmnf53JRhocjtLdHyechl5tBfX05wUgkEsdcKYVYLEassRVoZWign2JxhFgY2hvjDIwV2DpYpDoZEAlDtgCZXJhwJEm9H8DS0+6ee/6PWbP+ZNpgzOgo/PrX7dTUnMNll01foHzLLXEuuqiNUKi88Uh/fz0nnbSrD1q/PkJn5/RapN3dIdrba+ntDRGP10wLTPv7oaoqST5/4FUgVVVVvOyNf0EQfIzbf/dLVt/0US6a8zDz9sghk3F4+XkloJffP3o9T/zqTjbfuYiGE1/PBZf/CdXVL2FocJDb7/854dE7OKlznFSyHHQeqJQHwNJZeZ7YlOHk+eVUNhqB2to6Zs8+yBb1x6kLr7qKXw4McGF3N78fGmIsk6G9VKIYCrElEiHX0cHbn/OcfT52dHSUTY88wtiKFbBuHXUDA8wuFJ5S+aMM8JvxcYZGR8lu20akp4e5ExO8lAMvry8AN4XDrDnrLE77m7/hqksvJbzbm/PEJUueQmt0LMrlciQSxYMeF49DPh8wNdVJfX2Mvr5HaG+f/ri+vggzZ+7qE/N5GB+P0dh4/NUVlXT8yeWy3HDDv/Oc53x12n4XW7bADTfMY/HiP+Pkk//QYoXSvrmUfj/y+Twb1q5lcnyc+qYm5sybRzgcJpPJcO2nPsWrN2zYa0fUAvCdlhYueO97mbdw4X6fu1gs8tevfjV/uW7dPpdkBcBfAu+CnTWoNmSzrMlmqQmHOaumhug+lrEPFwpc19cHw8M8J5vlYJUeB4DftrRQfOUrOf/DH2bWnMq8wFLZ8HA/0egKdmxmXCrBpk1JOjvrgRDj4w00NT2Z+TNHt1wux9jQVlpSu+qpFgJIZ0qUgoBYNEwkEmIyV0/TUVgiQDqWrVr1EIODy3n2s3dd2Ody8LWvNRKLPZ+rr56+FuK226KccUYXyWR5E5EHHqjmrLMadt7f3R2mUGhg1qxdcdTYGBQKtRQKUWprU6TTIQYHYdas8nOEw0mi0Qjd3THmzFn8pNq/ccM6bv7+h5gX/l8uXLr/UGNDL9zyaJJQVRcNC67i7Od9iPaO8if71i2bWHX/j9mw6i6ed2qBcDjEjKboPuuSrtwMk6VWzlpcXsHxvytauPxl76nomez9/f1c+4lP8KbRUfbsoR+LRrl72TL+6J3vZNOqVQzffz/F1atJ9fXRlc3yVIoNlIBuYHMyyapQiEhvL6F168ht3Urr2BjP3ceO8nu6MxTiwZNOYt6f/zmXvPrVFf3vp7KxsTG2bbuZxYszBzzugQfCdHY20Nh4EcPDm2hs7J82m6qvL0RjYxWx2K4OpL8/TCo1j6qq/e2eIElHh1KpxM03f4uGhj9m+W7LW8fG4Npr26mtfSNvectnjlwDdSyzxujhMjk5yXX/+Z8kNm3itIEBYsCaVIoNM2Zw6RvewLxFB96V+9YbbqD0yU9yUWb/J0GrgfuBRRMTfGXrVuZls5xcKDAWCnFrPM78+nre19nJw0HAbzIZqvv6uHBoiL2rpE03AfwmlWLsyis586MfZckp+9s7VZUkn8+zZcudzJu36z05PAzhcAv19VEGBqppbp5/3NWV7evdRn1iksQ+5s6XAhiYiNLY0uXFq/Q06unZyv33L+IFL0hPu/0//iNFOHw5b3tbfNrMzgceCDF/fhf19eXQ884745x9dsvOY4aHobu7kZNO2vWHnMtBb2+SmpoqEokaamrCO2/fuBGamuI0N8fI52HLlhjz5j25YHSHyclJfvm9fyC08V954emjVO1nEv1kBn5xT4SJUht1XRdy0kV/xqOPruRbX/krUqE+4rGAsXSc5tZOLjmni1c8p5XoblMOb1gR5sQFHcxuizE6BXf3nM5lV/zRU2rz8eLb//IvvODuu/capN7hIWAdcBUHLzm0L/3AlkSCibY2SvPmMVgqEbnzTlixgrGtW6kaGeHSYpGGgzzPY8Adc+fS/L73cenb3kaN5Ym0h3vuuZEzzxxif6dY2SysXBmjvf1kkslaqqs3sPuCnbExiESqdvZzsOMcrp36+uO75rCk48O99/6WwcHn8fzn7xpsLhTgS19qIJF4AW9/+7eOu+tQPWMMRg+3kZERHnvwQQq5HLMXLmTOPuqC7svnP/Qh3nfzzQdcZgXwvvFxwhs28Nl8fq+aB7eEw/xTdTUfmZzk3IP8G+aB38bj9DznOSz9yEc448IL7Vi00+joMBs3PkIolNk5+2DGDBgfjzB7ditDQzFqaxccl+FgPp9ncKCHmliW6kRAZPufRSYPI+kodfWtVNekjmwjpePI+PgYP//5fF7zmum1ur/61QSl0vP44z+unba78urVkErNpKOjvD5+xYooS5a0kkiU/1jTaVi5sokzzpj+ibp2bYyWlhShUDV1ddPvK9cmTdDYGGVsDCYnm+joOMD284cgCAJ+d+N1bLj1L3juoifoOkA1mt+sgC/+b5RXnFfkNRcFO2ueZvPwjRsjPNbTSFvXEj78+llEwuVax/91Y4K3XtXBZA5++eAMXvDSqys6YJucnOSnH/84r+3r2+8xAXAN8FYOfkY8BmyMRhlrbiaYN4+6006j/cQTWXvXXQz88IdUP/gg/T09lAYHubBQ4GALk7cAN82YQfItb+Hi97+f1jZXHWj/enu3MjBwHyedlNkrHC0U4KGHwjQ21tPaeg5BsHLnyh4ob7Y0MZGgpWXXlcLkJExNpWhpmev5vqSjUjo9xfj4MFCkv7+HFSuew+teN30D7H//92qi0Yt585t/clxeh+oZ4+ZLh1tDQwPPvuiiJ/24oFg8aCgaBAHrNm/mJ/n8Po+9qFRi68QE4wd4jlsjEdaefTZzP/QhnvviFxON+s+t6davfwLYxpIlhZ2haHmXZhgdDTEyEqa29vjdjT0Wi9HaNpOpqUkGJ0bZMf4TjVXR3Npw3L5u6UjI5/N897tn8La3TQ9Fv/OdKLHYuVx11fRQtLsbYMbOUHTt2hBz5zbvDEXzeXjkkeZpGzRBebOl1tYUxWLVtI2ZdmhshM2bCzQ0RBkaCtPZ+YeHVqFQiIsuezkXXfZy1qx+jGt/+EFOTF7PuYtLex378Ab4fy8rcP4em4knYvAnVxT57i1DbJncyHW3VPFHF7fw/duiLJzTwG9W1jMVtHL5i/+ookNRgA0bNnDiQXalDwENlOuA7r6vXhrYGA4z1NhIcfZsUsuWMfPUUzl5xgyy2Sz3/epXbPzylxl/7DH6enuZGBhgYTbLcw/SpmHghro68q98Jed95CO8YcGCP+AVqpLMmNFJoZDn3nsfY86cSVpaShSL0NsbYuvWMPPnV1MsLiSbfYLm5l2Py+dhcDBGZ+f02fJTUzEaGroMRSUddYIgYHCwn0hknMbGEuPjk9xyy8t417umh6Lf/GaMePxMrrrqv7we0zPCpOwI6Fy8mNW33sqBFtz/anycFx8kQH0F8D7g+bvd9kAoxENLl9L6nvdwyRvfyAVVVft5tCpdT89W4vFtdHYWpt0ei8Hs2dDdXWRsLEFDQ3w/z3B8iEQi1NbWUVtbd/CDJT0lQRBwzTWX8M53rpl2+y9+EQbO4MILZ9DUtOv2sTHo6Wni9NPLn2F9fZBMNtPQsOtT8eGHm1i2LDxt2X1PT4iGhlqy2SStrfs+xdkxRtjTE6a+vuNpP+FeuGgJCz/6K8bHx/nu//wNsa3/wZVnTJKIQbEIT2yB979k/49/1YUl3vHvAwzlJxgonkzXgrNonn8Cs+cuoL6+fv8PrCBBEBAu7R0678t6YKyujlxXF1UnnUT78uUs6uoisn2qbjqd5t5f/IK7r7uOmU88weTgIIN9fcxIp3npQZ47DdyYTDL8ghdw+kc/yivPPPMPel2qXJ2dc2lr62Tz5nWsX/8YiURAa2ucM8+M09sbJxwepbl5X5st7TpHK5VgdDRMKmUJIElHp6GhAW688QfceuuvGR/P0NGxks98Ztu0Y372szCZzKmceeanaWtr388zSU8vg9Ej4IWvex1f+cUv+NC2bfs95of5PH+Vzx/weWJAAlgD3DlvHtVXX81z3v1uTt99GzdpPwYHN3PSSYX93t/REfDoowMEwQJnHUj6g3zta6/j6qtvm3bb7bdDJrOUhQvnMX/+rnQzm4WHHqrl/PPLgxWTkzA01MDixbsCgAceiDN3bmTaDNOxMYAaMpkkHR37DwXyechmIzQ3z6Subn8VKv9wtbW1vPpPPkup9Bl+++v/Ycttf0ln1XrOPuHAjwuFoLMpT6ImzKuv/jiNjYevjceq2bNn86umJk4fGJh2ey4IGCwWSQKN0SjbmptZ+o530FlbS1fXrhl0U1NT3PuznzH64x8zZ80aIqOjDPb2UjMxwXM58I7yReCWaJTNF1zAog9/mBc+73nTdpSXnqpYLEYiUeScc3bNCM/lIJutZ/bs6fsS9PVFaGtLTlt6PzwM8XgrVVWWAJJ0dMnn8/zbv/0Vt9/+FV75ymGuvjpgyxb4v/+DL34R3vve8vnP7bfD0NBJtLa+keXLLzjSzVYFMRg9Ampra5n/8pfz4298g5eWr+Sm+X1VFcH8+RQ2bjzocw23tFDz4IO8fubMgx4r7ZBOp4nH0/st9L9DKpVhcnKSVMqTbElPzfe//xe84hX/Q3y3yeePPgo9PYuoqlrC2WfvCpVKJbjttiouuaS8XjSfhyeeqGb58l27Kq9eHaGpqX7aDNN8HoaHk4RCs4hGs8D+B30GByPMnLmAurpnZvZlOBzm0he8Dl7wOr7z7W+QGHszByvbXpMMKIbDDkrtR11dHdmuLsYHBqgFhgoFvtPXRzqdpiMIGCgUuGHzZpqKRULf/S65cJjHWltpXryY84OARRs20DQ5yYbubhgf59JSiXMP8jPvCYV49PTT6Xz/+7noVa8iHj++V1PomZPP5xkY6COTmaBU2koux87+sqcnTmdnZmctYoDRUaiujk/blX5sDEKhFLW1ByhwLElHQCaT4e///r3MnfsNfvCDXRO/li+Hq64qh6N//dfw6lfDmjULKZUu5Mor33EEW6xKZDB6hLz0TW/i+tpa/vb732f5li3MzGQYjMW4q7OThc97Hh8691x+/pzn8P49ZkPsbhxoOvdcOgxF9SSNj4+QSOw/ONghGg0oFosHPU6S9uX//u8rnH/+31G3W6WKLVvgscfmkMst52Uvmz437+abY1x44Yydgzb33RfnnHMadt6/eXOYXK6JRXvUonnssRiNjbPp6jqZDRueYHJyhH2V4UynYXKymhkzjkzpjOdeejn/ekMHsP8VIwAb+yI01ba6dP4AXvTWt/Ktv/97nrdxI9/ctIk/zeVoBvrzeT60ejVfyWSYtqVWby83PvII/xGL8epikeeWSpx8kJ/xBHD3woXUvuMdXPr2t3OWg4R6GgVBwObNa5ia6qOlZYq6uvIM0fXryyU/Zs6EZDI6bVApnYZcLkFr664BpUwGCoU4tbWdzl6WdNR5+OF7GBn5MW9+875Xwz7/+XDvvfC9781gdHQ+733vuygdYrkc6eliMHoEPe/lL+fSl76UB1esoG/rVupbWvizM8/cWRfoiyecsHM2xL78Z3Mzr//4x5+5Buu4kM/nKBQ2kcmEONispampKM3NiWemYZKOK3ff/WvmzHkHu4/djY7C737XzuTkObztbdND0dtvj/LsZ8/cWQP0gQeiLF/esjMk7e+H4eFmlu6xadH69WFqa1OkUnMIhUJ0dS1gy5Z1xOMTtLTkSSTKYcPAQJRstobZsxcesZmYM2bMYJglZHLbSO5nwmHfCBTDNZxwyiXOGD2AxsZGXvOxj/GJ176Wv83l2BFZfnrjRj6fybCveXOXApl8vjywvJ/n3Qbc0tFB5A1v4OIPfpA3zJhxOJovsWHDE9TUdDN79q6B6pqa8gZxw8Pw+ONw+um7+sl8HoaGEtM2W8rny+dqiUQHsZizmCUdXSYnJ/n5z7/Ce94zeMDj/uRP4AtfyFEs5ohEcJBHzziD0SMsHA5z+vLl5bnke/jL736X91x2Gf/wxBN07HZ7EfhqYyPJd7yD5Wed9Yy1Vce+fD5PX9/jzJgRMDYWIZ8vsL/6/Pk8FArVJHcv4idJh2DVqgcpla5k8eJdgy/ZLPzwh40Ui+dy9dXTTz8efDDEkiUdVFWVg8DVq0MsWNCyc6bU+Dhs2NDEySczbUlpX1+ItrYU4TD09PTQ2NhILBZj3rwTmZqaore3m2IxTyQSoamp46goC/KnH/ki7/3oFXzpzZuI79H/jk3B+76aYNbJl/OK1/7JkWngMWR8fJzTCoWdoWhvPk9tOr3PUHSHFwJvB16z220jwI0NDWRf9jLO/ehHec3ChYepxVJZOp2mUOinrW3fq3caG2FkBMbGitTVlTu9np4YXV3T+87R0TDRaAM1NW4gKenoMzY2yKZNj+210mdPra0wNZUnlcqTzebcQE7POIPRo9isWbP47O9+x7/9+Z8zePvtdExMMB6JMDpnDi/70Id43ktecqSbqGPM8PAWGhuniEahqyvB6tVFFi0K9gpHCwVYsyZJV9dBPsUkaQ/d3VtYu/bZXHHF9DIcX/96iljsXN7whuS0cHPtWmhp6aCxccfFP6RSzdTVlWcLZDKwcWM1DQ0RHnkE5s2DlhaYmIBQqIaamgjZLJRK02fAV1dXM3v2gsP7Yp+CExefxPv/5mf8ySffzMktj/GC5RmKRfjxXTHuXFPHRVdczQc+/CkvCg7Bit//nnMHd81CuWtiguccZOPKEFALTAI3V1Ux8LzncfrHPsbLzzrLGbp6xvT0bGTmzMwBj+nshA0bctTVVdHTE6G9Pb7XZkuRSDWpVOthbq0kPTWlUolstkSxOH1ge09BUK4zX/4IP9AWiNLhYTB6lGtra+Nvrr2WYrHIyMgIVVVVVFdXH/yB0h5GR/uBPna8fVKpMO3tVTz6aI6WFmhuLs9aGB6OMjSUZNasxdTWOgNB0qEbHx/jlltO59WvTk+7/atfTVBXdxaXXlpHVdWu23t6oFBoo7Mzvv3xMDbWwAknlL8vFGDt2gQnn1wuGFoswkMPlU+eM5kks2eXw8PR0TC1tcfO7u1Ll53K1390PyseuJ+bbv4Fo2NjnPPaS/noc55jIPoklIpFdl9sF1AOPg9mKpHgnu9/nyuuvNLlejoistn0Pusg7y4eL/d1w8OhvTZbmpqCcDhBMtlBNOrlnKSjU3V1HSeeeC4/+9lDvPSl+9+34p57YObMOrq7G2hoaHsGWyiV+Ul6jIhEIjQ3Nx/pZugYNTU1zsTEJjo7p8+oymbjLFhwEoVCQE9PHwD19c0sXdrizBlJT0oul+N73zuTt751+qaB3/lOlPb25ZxwQhutrbv6lfFx2Lq1iTPOKI/W5PPwu9/VcNJJuwb/Hn88xkkn7RqgiUTglFPgzjtDnHtuOWENAujvT7J48bF3In3a6cs57fS9S+no0Cw95xzuaWhg0cgIAGfW1HBNLMYlB5g1GgCFpUu5+KqrnplGSvsQCoXI59lvOSMo923FIuTzSRobdwX4+TxkszFisVYSCcsdSTp61dc38NznvoTPf/6HvPCFvdM2k9uhVIL/+I847e0zOfnki2hoMPPQM89hcuk4EwQBU1NT9PVtY/Pm9axfv5re3vU0N0+/UOzvh2Syi9raRhobm5g3bzHz5i2mqanVUFTSkxIEAV/72nN461tXT7v9F78I09Z2Mk1NszjxxF1Lo3I5WLGiljPO2BV6PvBAgiuuqGdoqLwr8+OPRzjxxAb2nNAXiZSX0o+NFQkCWLMmTlvbAiIHWqOl49LCRYtY09VFbvv3nfE4fYkEYwd4zE2xGOe+/vXPRPOk/WpqmsnAwIHnpwwPAyRpa5veCY6OhoFaUqljZ5a8pMoUDodZunQ5l1zyJ7z+9Q1s3jz9/r4+eOc7Y0SjCwiCJbzqVe9w5YyOiFAQHHhX6t0c8oGSjox8Ps/AQA+Tk8MUCllqa4skEjt2LYW6uh3FrWF0tJmODmuISnrqxsfHGR4e5he/+ABvfet102Y/3XYb5HJLGB9fxlVXTQ8Arr8+yWWXte+sl/fAA1FOPrmNWKw8S+r66+H885upqdn3+G1fH2zbVkcs1kBHxwKamqyxV6nWr1nDtz/wAT60bRtVwJZcjr9YvZovZLPsGRvdF41yzXOfy7/94hcG6Tqi8vk8jz56F0uXpvc5a7RQgEceibJ0aTOx2K7B6qGhcl3R6urZhgeSjhmrVz/BHXf8hN/85vuMj68hlcqSzYaZmEjR1bWEWbNO5kMf+hxVu9dbkp4ehzTjy2BUOo709GxmbGyAVCpLRwfsOfGzr6+8LKtQSNLZeYq11SQ9JTfc8Ct+9KMv09Q0RCy2gQ99aDN1u5UkXrkSursX8tBDJ9LYWM8LX1gelAG48cYYU1OdzJsHy5aVd6Bvb59Bbe2u/mjVqhBVVXXMmrWPNVfA1q0hMpnlLFhw9G2upGfe5o0b+Z9//EdqN2xg4cgIW4pFfrRpE7OyWZ6dz5OLRLivo4N5V1zBBz/zGWsy6ojq7+9mYqKXZDLNwMAkc+YE0/rPyUlYty5CR0c9LS27+sDxcYAksVgXyaThgaRjS39/P3fe+Wui0QmGh0cYHJygWExw+unP5qKLLjvSzdPxy2BUqiTpdJqennXABPPm7f/Pdf16mDHjFDfxkvSk3XDDT/j61z/GSSetZcmSHJs2hVixIuDKK+GP/qh8zJYt8NBDc4hGT+B5z2slnYb//m946Uth7doIp57aSVVVmFtuKc9i7+hoob19egA6NATbtlXv3HRpTw88kGLp0kuJ76tYlSrW0NAQW7ZsIZFIsHDhQiYmJli7di2xWIwlS5YYiOqI6+vrplTaQnt7eROSXC5g27Yc6XQRKJHNhkkkIsTjdcycGd25WV0mA7lcDGijrq7piLVfkv5Q+XyeiYkJEomE16N6JhiMSpWkr28bo6M9dHTkSKX2f1w6DQMDM5g1a94z1zhJx7wf/OCrrFv3MT784YG9ZqNfe225b3nta+Fv/7adZcsW8cY3ztp5fzoN11wDr399F42N5XCqUIAf/jDKq1+996ZJPT0wMlLL4sV7bywyOhpi06bZLFt2ztP7AiXpMMrn82zZ8ijz5mX2e8zQEGQyMVpa4gwOQjIJqRSMj0cJhVI0Ns7a72MlSdJeDikYdR2tdJzIZrNA8YChKEBVFRQKU89ImyQdH8bHx7n55n/gz/9871AU4M1vLs8U/drX6vngB2eSzU6vfVdVBTNmRAiCXQ+ORqG5GdLp0l7Pt3p1kny+lt03Fw8C6O4Os2pVC4sXu5O7pGPLyMgQDQ3ZAx5TXw/ZbIl4HDo6yhvV9fVBJBInlWp/hloqSVJlcU2RdJwIh8sbSQTB3rVFJekP8e1v/ytXX73hgMe8613wX/8VpaMDRkf3vvhfvLjIpk05mpp21carqQnIZAJ2r7U/PAyRSCft7ct55JHHgUkACoUYra1zOP30eS6JlnTMyWSmaGs78AK8PfcEa2qCnp4w2WyS+no3W5Ik6XDwykI6TtTXN5HJDDI2VqS+fv/HTUxAMlm3/wMkaQ+PP34b73jH3jM7d9fVtSsQ3dfgTLG490X/6GiIqqry4pUggM2bI6xZM4Pzz38O8Xic1ta9l9lL0rEoEolQOnA3updYDMLhEpAnn8+7E70kSYeBwah0nEilUvT3J+nry1FbG7CvDefLS1GjzJ3rcixJT0bokGajl0rQ3w81NYm97lu5MspLXrKrZmguB4ODddxzTwsQUCrFmTlzMRdccIIX/5KOOw0NLQwN9dPZmd/vMek0RKPTO9pwGMLhgCexL4QkSXoSDEal40h7+1y2bFnNxo1puroCds8W8nnYsiVCc/McQwdJT8o551zFzTdfzyWX7P+C/rHHYNasGn7wgygvfWnztPsGBiAcTlBTU77gL5XgN79p4LnPfTUdHZ2Hte2SdDSorq6mt7eaTGaU5N77yhEE0NMToqMjPu32UmlHmSTrJEmSdDi4+ZJ0HKmqqmLWrBOABtaujbBuXYjNm0Pb/z9Bc/OJNDW1HulmSjrGvOxlf8w3vzn3gMtA/+3fYjQ2zqS1tYGOjl2DL1u2wHe+k+DFL24hCGDt2ig//nELixe/xFBUUkXp6lrI5s01jI6Ww84dMhnYsCFEQ0OcZDI07fZIJEKxGHFQW5KkwyT0JJZluH5DOobkcjkymQzFYpFUKuUJtaQ/yO9/fyPXXfdmPv3pLVRX77o9l4NPfCJOd/cZnHfeiwmFJqivHyUaDRgerqapaSkzZsxiaGgLAF1diznppNPskyRVpHw+z/DwAJOTAwRBgWKxQCIBra3xnTWXy8dBdzfU1iaJRmdQW2t9eEmSnqRDWm5hMCpJkg7Jo48+yFe/+hdEIo/S3p6htzfKwEAnL3/5/+NFL3r5zuPS6TSFQoGamhrC+yp4LEkCYHR0mOHhbTQ2lqiuLi+dHxuDTCZMMhknEqmnqcmN6CRJegoMRiVJ0tNvamqKkZER6urqSKVSR7o5knRM2zGLdGpqjFAoIBqNEYslSaUaqK6uOdLNkyTpWGUwKkmSJEmSJKniHFIw6vo2SZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRSZIkSZIkSRXHYFSSJEmSJElSxTEYlSRJkiRJklRxDEYlSZIkSZIkVRyDUUmSJEmSJEkVx2BUkiRJkiRJUsUxGJUkSZIkSZJUcQxGJUmSJEmSJFUcg1FJkiRJkiRJFcdgVJIkSZIkSVLFMRiVJEmSJEmSVHEMRiVJkiRJkiRVHINRVYyLL76Y97///Tu/nzt3Ll/4whcO+fFf//rXaWhoOOAxn/zkJznttNOeUvsk6Q9hHyfpeGYfJ+l4Zh8nHTkGozpm9Pf38853vpPZs2eTSCRob2/n+c9/PrfddtuRbtpTtmHDBq6++mrmzZtHVVUVCxYs4BOf+AS5XG6fx69Zs4ba2tqDfuhJOvZUah+3YcMGQqHQXl933nnnEWy5pKdbpfZxAEEQ8LnPfY4TTjiBRCJBZ2cnf/u3f3uEWi3pcKjUPu6Tn/zkPs/jampqjmDLpScneqQbIB2ql7/85eRyOb7xjW8wf/58ent7+c1vfsPg4OCRbtpT9vjjj1Mqlfjyl7/MwoULeeSRR3jb297G5OQkn/vc56Ydm8/nec1rXsMFF1zA7bfffoRaLOlwqfQ+7sYbb2Tp0qU7v29ubn6mmyvpMKrkPu5973sf119/PZ/73OdYtmwZQ0NDDA0NHcGWS3q6VWof92d/9me84x3vmPa45z73uZx11llHosnSU+KMUR0TRkZGuPXWW/nMZz7DJZdcwpw5czj77LP56Ec/ylVXXcVb3vIWrrzyymmPyefztLW18V//9V+H9DM+//nPs2zZMmpqapg1axbvete7mJiY2Ou4n/zkJyxatIhkMsnzn/98Nm/efMDnveaaa1iyZAnJZJLFixfz7//+7zvvu/zyy7n22mt53vOex/z587nqqqv4sz/7M6677rq9nufjH/84ixcv5pWvfOUhvR5Jxw77uHIQ2t7evvMrFosd0uuSdPSr5D7uscce4z/+4z/46U9/ylVXXcW8efM444wzuOyyyw7pdUk6+lVyH5dKpaadv/X29rJy5UquvvrqQ3pd0tHAYFTHhFQqRSqV4ic/+QnZbHav+9/61rfy61//mu7u7p23/fznP2dqaopXvepVh/QzwuEwX/ziF3n00Uf5xje+wW9/+1s+/OEPTztmamqKv/3bv+Wb3/wmt912GyMjI7z61a/e73N++9vf5q/+6q/427/9Wx577DH+7u/+jr/8y7/kG9/4xn4fMzo6SlNT07Tbfvvb3/KDH/yAL33pS4f0WiQdWyq9jwO46qqraGtr4/zzz+dnP/vZIb0mSceGSu7j/vd//5f58+fz85//nHnz5jF37lze+ta3OmNUOo5Uch+3p2uuuYYTTjiBCy644JBel3RUCILgUL+kI+qHP/xh0NjYGCSTyeDcc88NPvrRjwYPPvjgzvtPOumk4DOf+czO71/0ohcFb3rTm3Z+f9FFFwXve9/7dn4/Z86c4J//+Z/3+/N+8IMfBM3NzTu/v/baawMguPPOO3fe9thjjwVAcNdddwVBEASf+MQnglNPPXXn/QsWLAi+853vTHveT33qU8Gzn/3sff7M1atXB3V1dcFXvvKVnbcNDAwEs2bNCm655Zad7aivr99vuyUdmyq1j+vv7w/+6Z/+KbjzzjuDu+++O/jzP//zIBQKBT/96U/323ZJx55K7ePe/va3B4lEIjjnnHOC3/3ud8FNN90UnHbaacEll1yy37ZLOvZUah+3u3Q6HTQ2Nk57ndIRdkh5pzNGdcx4+ctfzrZt2/jZz37G5Zdfzs0338zy5cv5+te/DpRH4q699loAent7+dWvfsVb3vKWQ37+G2+8kec+97l0dnZSW1vLG97wBgYHB5mamtp5TDQanVYvZfHixTQ0NPDYY4/t9XyTk5OsXbuWq6++eucoYiqV4tOf/jRr167d6/itW7dy+eWX84pXvIK3ve1tO29/29vexmtf+1ouvPDCQ34tko49ldrHtbS08MEPfpBzzjmHs846i3/4h3/g9a9/PZ/97GcP+bVJOvpVah9XKpXIZrN885vf5IILLuDiiy/mv/7rv7jpppt44oknDvn1STq6VWoft7sf//jHjI+P88d//MeH/Lqko4HBqI4pyWSSyy67jL/8y7/k9ttv501vehOf+MQnAHjjG9/IunXruOOOO/jWt77FvHnzDnkK/4YNG7jyyis55ZRT+NGPfsR99923c9n6/naIP5gdNV+++tWvsmLFip1fjzzyyF67LW/bto1LLrmEc889l6985SvT7vvtb3/L5z73OaLRKNFolKuvvprR0VGi0Shf+9rXnlLbJB2dKrGP25dzzjmHNWvWPKV2STp6VWIf19HRQTQa5YQTTth525IlSwDYtGnTU2qbpKNTJfZxu7vmmmu48sormTFjxlNqk3SkuCu9jmknnXQSP/nJT4Dyxh0veclLuPbaa7njjjt485vffMjPc99991Eqlfinf/onwuHyeMH3v//9vY4rFArce++9nH322QA88cQTjIyM7DzB3d2MGTOYOXMm69at43Wve91+f/bWrVu55JJLOOOMM7j22mt3/vwd7rjjDorF4s7vf/rTn/KZz3yG22+/nc7OzkN+jZKOPZXQx+3LihUr6OjoONSXJ+kYVQl93HnnnUehUGDt2rUsWLAAgFWrVgEwZ86cQ36Nko49ldDH7bB+/Xpuuukm68TrmGQwqmPC4OAgr3jFK3jLW97CKaecQm1tLffeey//+I//yItf/OKdx731rW/lyiuvpFgsPqkp/AsXLiSfz/Ov//qvvOhFL+K2227jP//zP/c6LhaL8d73vpcvfvGLRKNR3vOe9/CsZz1r54fPnv76r/+aP/3TP6W+vp7LL7+cbDbLvffey/DwMB/84AfZunUrF198MXPmzOFzn/sc/f39Ox/b3t4OsNcH2b333ks4HObkk08+5Ncn6ehWyX3cN77xDeLxOKeffjoA1113HV/72te45pprDvn1STq6VXIfd+mll7J8+XLe8pa38IUvfIFSqcS73/1uLrvssmmzSCUduyq5j9vha1/7Gh0dHVxxxRWH/Lqko8ahFiN9hgukStNkMpngIx/5SLB8+fKgvr4+qK6uDk488cTg4x//eDA1NbXzuFKpFMyZMyd4wQtesNdzHKyg9ec///mgo6MjqKqqCp7//OcH3/zmNwMgGB4eDoJg16ZHP/rRj4L58+cHiUQiuPTSS4ONGzfufI49C1oHQRB8+9vfDk477bQgHo8HjY2NwYUXXhhcd911O58T2OfX/rj5knT8qeQ+7utf/3qwZMmSoLq6OqirqwvOPvvs4Ac/+MEf8NuUdLSp5D4uCIJg69atwcte9rIglUoFM2bMCN70pjcFg4ODT/G3KeloU+l9XLFYDLq6uoKPfexjT/E3KB02h5R3hoIgOOQM9Q8NYaXDbWJigs7OTq699lpe9rKXHenmSNLTyj5O0vHMPk7S8cw+TnrGhQ7lIJfS67hQKpUYGBjgn/7pn2hoaOCqq6460k2SpKeNfZyk45l9nKTjmX2cdHQzGNVxYdOmTcybN4+uri6+/vWvE4361pZ0/LCPk3Q8s4+TdDyzj5OObi6llyRJkiRJknQ8OaSl9OHD3QpJkiRJkiRJOtoYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJkiRJkqSKYzAqSZIkSZIkqeIYjEqSJEmSJEmqOAajkiRJkiRJkiqOwagkSZIkSZKkimMwKkmSJEmSJKniGIxKkiRJkiRJqjgGo5IkSZIkSZIqjsGoJEmSJEmSpIpjMCpJkiRJkiSp4hiMSpIkSZIkSao4BqOSJEmSJEmSKo7BqCRJ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g1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRiVJkiRJkiSVHINRSZIkSZIkSSXHYFSSJEmSJElSyTEYlSRJkiRJklRyDEYlSZIkSZIklRyDUUmSJEmSJEklx2BUkiRJkiRJUskxGJUkSZIkSZJUcgxGJUmSJEmSJJUcg1FJkiRJkiRJJcdgVJIkSZIkSVLJMRiVJEmSJEmSVHIMRlUyTjzxRN73vvdtfjxt2jS+9rWv7fL211xzDTU1NTtt86lPfYqDDz74H+qfJEmSJEmS9hyDUb1sdHd386//+q9MmTKFsrIyWlpaOO2007j33nv3dtf+YatWreJtb3sb06dPJx6PM2PGDD75yU+STqcntLv11ls56qijqKyspLGxkQsuuIBVq1btnU5LkiRJkiS9AhiM6mXjggsu4LHHHuPaa69lyZIl/OY3v+HEE0+kt7d3b3ftH7Z48WLy+Tzf/e53eeqpp7jqqqv4zne+w5VXXrm5zcqVKzn33HM5+eSTWbBgAbfeeis9PT2cf/75e7HnkiRJkiRJL28Go3pZGBgY4O677+a///u/Oemkk5g6dSpHHHEEH/3oRznnnHO4/PLLOeussyZsk8lkaGpq4oc//OEuvcdXv/pVDjjgACoqKpg8eTLvfOc7SSaT27T71a9+xaxZs4jFYpx22ml0dHTsdL8/+MEPmDt3LrFYjDlz5vA///M/m187/fTTufrqqzn11FPZZ599OOecc/jgBz/ITTfdtLnNI488Qi6X43Of+xwzZszg0EMP5YMf/CALFiwgk8ns0rFJkiRJkiRpIoNRvSwkEgkSiQS/+tWvGB8f3+b1K664gj/+8Y9s2LBh83O33HILo6OjvOENb9il9wgGg3zjG9/gqaee4tprr+X222/nwx/+8IQ2o6OjfP7zn+e6667j3nvvZWBggDe+8Y073OdPfvIT/uM//oPPf/7zLFq0iC984Qt84hOf4Nprr93hNoODg9TV1W1+PH/+fILBIFdffTW5XI7BwUGuv/56Xv3qVxOJRHbp2CRJkiRJkjSRwaheFsLhMNdccw3XXnstNTU1HHvssVx55ZU88cQTABxzzDHMnj2b66+/fvM2V199NRdeeCGJRGKX3uN973sfJ510EtOmTePkk0/mc5/7HDfeeOOENplMhm9961scffTRzJ8/n2uvvZb77ruPBx98cLv7/OQnP8lXvvIVzj//fKZPn87555/P+9//fr773e9ut/2yZcv45je/yT//8z9vfm769On86U9/4sorr6SsrIyamhrWrl27Td8kSZIkSZK06wxG9bJxwQUXsH79en7zm99w+umnc+edd3LooYdyzTXXAMVRo1dffTUAGzdu5A9/+AOXX375Lu//z3/+M6eccgrt7e1UVlZyySWX0Nvby+jo6OY24XCYww8/fPPjOXPmUFNTw6JFi7bZ38jICMuXL+dtb3vb5hGviUSCz33ucyxfvnyb9uvWreP000/nwgsv5O1vf/vm5zs7O3n729/OW9/6Vh566CHuuusuotEor3/96ykUCrt8fJIkSZIkSdrCYFQvK7FYjNe85jV84hOf4L777uPSSy/lk5/8JABvectbWLFiBffffz8//vGPmT59Oscdd9wu7XfVqlWcddZZHHjggfzyl7/kkUce4dvf/jbANivE76pn65N+//vfZ8GCBZv/LVy4kL/97W8T2q5fv56TTjqJY445hu9973sTXvv2t79NdXU1X/ziFznkkEM4/vjj+fGPf8xf/vIXHnjggX+ob5IkSZIkSaUuvLc7IL0Q++23H7/61a8AqK+v57zzzuPqq6/m/vvv57LLLtvl/TzyyCPk83m+8pWvEAwW7xdsb6p6Npvl4Ycf5ogjjgDgmWeeYWBggLlz527Ttrm5mba2NlasWMHFF1+8w/det24dJ510EvPnz+fqq6/e/P7PGh0d3ea5UCgEQD6f3+VjlCRJkiRJ0hYGo3pZ6O3t5cILL+Tyyy/nwAMPpLKykocffpgvfvGLnHvuuZvbXXHFFZx11lnkcjne+ta37vL+Z86cSSaT4Zvf/CZnn3029957L9/5zne2aReJRHj3u9/NN77xDcLhMO9617s46qijNgelz/XpT3+a97znPVRXV3P66aczPj7Oww8/TH9/Px/4wAdYt24dJ554IlOnTuXLX/4y3d3dm7dtaWkB4Mwzz+Sqq67iM5/5DG9605sYHh7myiuvZOrUqRxyyCG7fIySJEmSJEnawmBULwuJRIIjjzySq666iuXLl5PJZJg8eTJvf/vbufLKKze3e/WrX01rayvz5s2jra1tl/d/0EEH8dWvfpX//u//5qMf/SjHH388//mf/8lb3vKWCe3Ky8v5yEc+wkUXXcS6des47rjj+OEPf7jD/V5xxRWUl5fzpS99iQ996ENUVFRwwAEH8L73vQ+A2267jWXLlrFs2TImTZo0Ydtn64eefPLJ/PSnP+WLX/wiX/ziFykvL+foo4/mj3/8I/F4fJePUZIkSZIkSVsE/o7FW1zlRS95yWSS9vZ2rr76as4///y93R1JkiRJkiTteYFdaeSIUb0i5PN5enp6+MpXvkJNTQ3nnHPO3u6SJEmSJEmSXsIMRvWKsGbNGqZPn86kSZO45pprCIf91ZYkSZIkSdKOOZVekiRJkiRJ0ivJLk2lD+7uXkiSJEmSJEnSS43BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqSJEmSJEkqOQajkiRJkiRJkkqOwagkSZIkSZKkkmMwKkmSJEmSJKnkGIxKkiRJkiRJKjkGo5IkSZIkSZJKjsGoJEmSJEmSpJJjMCpJkiRJkiSp5BiMSpIkSZIkSSo5BqOSJEmSJEmSSo7BqCRJkiRJkqSSYzAqSZIkSZIkqeQYjEqS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oyJy2ny/i+kKO0dHS3z607v5n//J0tw8efziiwfJZOC3fxv+9E9h7lzYscNg795/5/3v/+2XZdwiIiIiIiIiIkeYr/QAROS1xzSnX1njP/+zi7/8y8pQ9IhIBP7jP+Bf/gUefjhAOv0A112nUFREREREREREXn6qGBWR05bLxfB9OHbme6nk09OTZP786a+NRiEQMKiufpTVq895aQcqIiIiIiIiIjINVYyKyGk7++ybePLJ4/+uMjhYpKOjdNLrL7zQYWws81IMTURERERERETklCgYFZHTduWVN/Lgg2exf3/lR0ggYJDLnfz6fN4iEAi8RKMTERERERERETk5TaUXkdNm2zZ/+Ief5ctf/hsymc1ccEE34bDHzp31PPtsFb4/fNw0+6M99lgHN9+85uUbsIiIiIiIiIjIMRSMisivJBAI8IlP/BXpdJqNG59mcDDLmjWLKBYf4K67fp+bbpp6qvxzz1k0N19GMBh8mUcsIiIiIiIiIjLJ8P3pd5c+xik3FJGZy/d9/uRP3suZZ97BrbemMc0jx2H9eptvfOMi/uu/fqqp9CIiIiIiIiLyUjnBPNajGikYFZEXm+/7/PjH3+T++z9PONyNZfmMjdVz3nnv5H3v+z/YtorVRUREREREROQlo2BURF55nufh+z6WZb3SQxERERERERGRmUHBqIiIiIiIiIiIiMw4pxSMmi/1KERERERERERERERebRSMioiIiIiIiIiIyIyjYFRERERERERERERmHAWjIiIiIiIiIiIiMuMoGBUREREREREREZEZR8GoiIiIiIiIiIiIzDgKRkVERERERERERGTGUTAqIiIiIiIiIiIiM46CUREREREREREREZlxFIyKiIiIiIiIiIjIjKNgVERERERERERERGYcBaMiIiIiIiIiIiIy4ygYFRERERERERERkRlHwaiIiIiIiIiIiIjMOApGRUREREREREREZMZRMCoiIiIiIiIiIiIzjoJRERERERERERERmXEUjIqIiIiIiIiIiMiMo2BUREREREREREREZhwFoyIiIiIiIiIiIjLjKBgVERERERERERGRGUfBqIiIiIiIiIiIiMw4CkZFRERERERERERkxlEwKiIiIiIiIiIiIjOOglERERERERERERGZcRSMioiIiIiIiIiIyIyjYFRERERERERERERmHAWjIiIiIiIiIiIiMuMoGBUREREREREREZEZR8GoiIiIiIiIiIiIzDgKRkVERERERERERGTGUTAqIiIiIiIiIiIiM46CUREREREREREREZlxFIyKiIiIiIiIiIjIjKNgVERERERERERERGYcBaMiIiIiIiIiIiIy4ygYFRERERERERERkRlHwaiIiIiIiIiIiIjMOApGRUREREREREREZMZRMCoiIiIiIiIiIiIzjoJRERERERERERERmXEUjIqIiIiIiIiIiMiMo2BUREREREREREREZhwFoyIiIiIiIiIiIjLjKBgVERERERERERGRGUfBqIiIiIiIiIiIiMw4CkZFRERERERERERkxlEwKiIiIiIiIiIiIjOOglERERERERERERGZcRSMioiIiIiIiIiIyIyjYFRERERERERERERmHAWjIiIiIiIiIiIiMuMoGBUREREREREREZEZR8GoiIiIiIiIiIiIzDgKRkVERERERERERGTGUTAqIiIiIiIiIiIiM46CUREREREREREREZlxFIyKiIiIiIiIiIjIjKNgVERERERERERERGYcBaMiIiIiIiIiIiIy4ygYFRERERERERERkRlHwaiIiIiIiIiIiIjMOApGRUREREREREREZMZRMCoiIiIiIiIiIiIzjoJRERERERERERERmXEUjIqIiIiIiIiIiMiMo2BUREREREREREREZhwFoyIiIiIiIiIiIjLjKBgVERERERERERGRGUfBqIiIiIiIiIiIiMw4CkZFRERERERERERkxlEwKiIiIiIiIiIiIjOOglERERERERERERGZcRSMioiIiIiIiIiIyIyjYFRERERERERERERmHAWjIiIiIiIiIiIiMuMoGBUREREREREREZEZR8GoiIiIiIiIiIiIzDgKRkVERERERERERGTGUTAqIiIiIiIiIiIiM46CUREREREREREREZlxFIyKiIiIiIiIiIjIjKNgVERERERERERERGYcBaMiIiIiIiIiIiIy4ygYFRERERERERERkRlHwaiIiIiIiIiIiIjMOApGRUREREREREREZMZRMCoiIiIiIiIiIiIzjoJRERERERERERERmXEUjIqIiIiIiIiIiMiMo2BUREREREREREREZhwFoyIiIiIiIiIiIjLjKBgVERERERERERGRGUfBqIiIiIiIiIiIiMw4CkZFRERERERERERkxlEwKiIiIiIiIiIiIjOOglERERERERERERGZcRSMioiIiIiIiIiIyIyjYFRERERERERERERmHAWjIiIiIiIiIiIiMuMoGBUREREREREREZEZR8GoiIiIiIiIiIiIzDgKRkVERERERERERGTGUTAqIiIiIiIiIiIiM46CUREREREREREREZlxFIyKiIiIiIiIiIjIjKNgVERERERERERERGYcBaMiIiIiIiIiIiIy4ygYFRERERERERERkRlHwaiIiIiIiIiIiIjMOApGRUREREREREREZMZRMCoiIiIiIiIiIiIzjoJRERERERERERERmXEUjIqIiIiIiIiIiMiMo2BUREREREREREREZhwFoyIiIiIiIiIiIjLjKBgVERERERERERGRGUfBqIiIiIiIiIiIiMw4CkZFRERERERERERkxlEwKiIi8v+3a4c2AMAwEMRUKfvP3BkKGnI2fhB8CgAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnCKAAAAACQI4wCAAAAADnzsD3frgAAAAAAWORjFAAAAADIEUYBAAAAgBxhFAAAAADIEUYBAAAAgBxhFAAAAADIEUYBAAAAgBxhFAAAAADIEUYBAAAAgBxhFAAAAADIubeu9zyJN6iuAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing grid movies to /Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50/grid_movies\n", + "Using window size of 128 pixels\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating grid movies: 100%|███████████| 30/30 [00:59<00:00, 2.00s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving dendrogram plot to /Users/milagros/Documents/datajoint-elements/element-moseq/data/outbox/kpms_project_tutorial/2024_03_13-17_33_50/similarity_dendrogram\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFnCAYAAAB3ijqPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8wUlEQVR4nO3deXgT9fY/8JOkadONbrRshbaUXUC4BQoFaUWwFGRTRFQoiCwCispXEfgpeEURFBUUBUEBWS6yWEHQgnChKjsUKFyhF5AWQWiBlqV7m+b8/uBJbmMzaZJJOjPk/XqePk+Tycnnc2Y+k5NZo2JmJgAAAJCUWuoOAAAAAAoyAACALKAgAwAAyAAKMgAAgAygIAMAAMgACjIAAIAMoCADAADIAAoyAACADKAgAwAAyAAKMrgtlUpFb7/9tunxqlWrSKVSUXZ2tt3vlZCQQG3btq3xddnZ2aRSqWjVqlV2t+GotLQ0UqlUlJaW5rT3tDSvEhISKCEhwWltEEkzvwCkgoIMinH69GkaOnQoRUREkE6no0aNGlGfPn3os88+k7prUIt++uknsy9SAPcLFGRQhAMHDlCnTp0oIyODxo0bR4sXL6axY8eSWq2mRYsWSd09WevZsyeVlJRQz549nfaeI0eOpJKSEoqIiHDae1oSERFBJSUlNHLkSNNzP/30E/3zn/90absAUvCQugMAtnjvvfcoICCAjh49SoGBgWbTrl+/Lk2nFEKtVpNOp3Pqe2o0GtJoNE59z6r0ej0ZDAby9PR0et8B5ApbyKAIf/zxBz3wwAPVijERUVhYmOn/+Ph4evDBBy2+R8uWLSkxMdGudrdu3Ur9+/enhg0bkpeXF0VHR9OcOXOosrLS4uvT09MpLi6OvL29KSoqipYuXWpTO5mZmTR06FAKDg4mnU5HnTp1oh9++MGm2G+//ZZiYmLI39+f6tSpQ+3atTPba2DpGLLxmPepU6coPj6efHx8qFmzZrR582YiIvrll18oNjaWvL29qWXLlrR7926zNm053l5eXk6zZs2imJgYCggIIF9fX3rooYdo7969Zq8zHidesGABLVy4kKKjo8nLy4vOnDlT7Rjy6NGj6fPPPyeie+cAGP+YmSIjI2nQoEHV+lFaWkoBAQE0YcIEm+YngFRQkEERIiIiKD09nf7zn/9Yfd3IkSPp1KlT1V539OhROnfuHI0YMcKudletWkV+fn40depUWrRoEcXExNCsWbNo+vTp1V5769Yt6tevH8XExNAHH3xA4eHhNHHiRFqxYoXVNn7//Xfq2rUrnT17lqZPn04fffQR+fr60uDBg+n777+3Grtr1y56+umnKSgoiObPn0/z5s2jhIQE2r9/f4253bp1ix577DGKjY2lDz74gLy8vGj48OG0YcMGGj58OPXr14/mzZtHRUVFNHToUCooKKjxPau6e/cuffXVV5SQkEDz58+nt99+m27cuEGJiYl08uTJaq9fuXIlffbZZzR+/Hj66KOPKDg4uNprJkyYQH369CEiojVr1pj+VCoVjRgxglJTUyk/P98sZtu2bXT37l27lz1ArWMABfj5559Zo9GwRqPhbt268bRp03jnzp1cXl5u9rrbt2+zTqfjN954w+z5KVOmsK+vLxcWFpqeIyKePXu26fHKlSuZiDgrK8v0XHFxcbW+TJgwgX18fLi0tNT0XHx8PBMRf/TRR6bnysrKuEOHDhwWFmbqZ1ZWFhMRr1y50vS6Rx55hNu1a2f2fgaDgePi4rh58+ZW58vLL7/MderUYb1eL/iavXv3MhHx3r17q/X3X//6l+m5zMxMJiJWq9V86NAh0/M7d+6s1mdL8yo+Pp7j4+NNj/V6PZeVlZn15datW1yvXj0eM2aM6TnjPKlTpw5fv37d7PWW5tfkyZPZ0kfXf//7XyYiXrJkidnzAwcO5MjISDYYDBbnD4BcYAsZFKFPnz508OBBGjhwIGVkZNAHH3xAiYmJ1KhRI7NduwEBATRo0CBav349MTMREVVWVtKGDRto8ODB5Ovra1e73t7epv8LCgro5s2b9NBDD1FxcTFlZmaavdbDw8Nst6inpydNmDCBrl+/Tunp6RbfPz8/n/bs2UPDhg0zvf/NmzcpLy+PEhMT6fz58/TXX38J9i8wMJCKiopo165dduVFROTn50fDhw83PW7ZsiUFBgZS69atKTY21vS88f+LFy/a9f4ajYY8PT2JiMhgMFB+fj7p9Xrq1KkTHT9+vNrrn3jiCQoNDbU7D6MWLVpQbGwsrVu3zvRcfn4+paam0rPPPksqlcrh9waoDSjIoBidO3emlJQUunXrFh05coRmzJhBBQUFNHToUDpz5ozpdcnJyfTnn3/Sb7/9RkREu3fvptzcXLMzdW31+++/05AhQyggIIDq1KlDoaGhpl2fd+7cMXttw4YNqxX8Fi1aEBEJHmu9cOECMTO99dZbFBoaavY3e/ZsIrJ+0tqkSZOoRYsWlJSUROHh4TRmzBjasWOHTbmFh4dXK1IBAQHUuHHjas8R3dvFba9vvvmG2rdvTzqdjkJCQig0NJR+/PHHavOOiCgqKsru9/+75ORk2r9/P126dImIiDZt2kQVFRUOLXuA2oaCDIrj6elJnTt3prlz59KSJUuooqKCNm3aZJqemJhI9erVo7Vr1xIR0dq1a6l+/frUu3dvu9q5ffs2xcfHU0ZGBr3zzju0bds22rVrF82fP5+I7m31iWV8j9dee4127dpl8a9Zs2aC8WFhYXTy5En64YcfaODAgbR3715KSkqiUaNG1di20FnSQs8b9zjYau3atTR69GiKjo6mr7/+mnbs2EG7du2iXr16WZx3VfdGOGr48OGk1WpNW8lr166lTp06UcuWLUW/N4Cr4bInULROnToREdG1a9dMz2k0GnrmmWdo1apVNH/+fNqyZQuNGzfO7st00tLSKC8vj1JSUsyu4c3KyrL4+qtXr1JRUZHZVvK5c+eIiCgyMtJiTNOmTYmISKvV2v2FwcjT05MGDBhAAwYMIIPBQJMmTaIvv/yS3nrrLavF3NU2b95MTZs2pZSUFLMtceOWv6Os7XoODg6m/v3707p16+jZZ5+l/fv308KFC0W1B1BbsIUMirB3716LW2g//fQTEVG1LaCRI0fSrVu3aMKECVRYWOjQGbbGAl613fLycvriiy8svl6v19OXX35p9tovv/ySQkNDKSYmxmJMWFgYJSQk0Jdffmn2pcLoxo0bVvuYl5dn9litVlP79u2JiKisrMxqrKtZmn+HDx+mgwcPinpf4xee27dvW5w+cuRIOnPmDL3++uuk0WjMjpMDyBm2kEERXnrpJSouLqYhQ4ZQq1atqLy8nA4cOEAbNmygyMhIeu6558xe37FjR2rbti1t2rSJWrduTf/4xz/sbjMuLo6CgoJo1KhRNGXKFFKpVLRmzRrBXbcNGzak+fPnU3Z2NrVo0YI2bNhAJ0+epGXLlpFWqxVs5/PPP6cePXpQu3btaNy4cdS0aVPKzc2lgwcP0pUrVygjI0MwduzYsZSfn0+9evWi8PBwunTpEn322WfUoUMHat26td05O9Njjz1GKSkpNGTIEOrfvz9lZWXR0qVLqU2bNlRYWOjw+xq/3EyZMoUSExOrFd3+/ftTSEgIbdq0iZKSksyuUweQM2whgyIsWLCAHn74Yfrpp59o6tSpNHXqVDpy5AhNmjSJDh8+bPGGIcnJyUREDp/QExISQtu3b6cGDRrQm2++SQsWLKA+ffrQBx98YPH1QUFB9NNPP9GxY8fo9ddfp8uXL9PixYtp3LhxVttp06YNHTt2jPr370+rVq2iyZMn09KlS0mtVtOsWbOsxo4YMYJ0Oh198cUXNGnSJPrmm2/oqaeeotTUVFKrpV29R48eTXPnzqWMjAyaMmUK7dy503RMV4zHH3+cXnrpJdqxYweNHDmSnn76abPpnp6e9NRTTxGR48seQAoqtvdMDQCFWLRoEb366quUnZ1NTZo0kbo7UIteffVV+vrrryknJ4d8fHyk7g6ATVCQ4b7EzPTggw9SSEhItVs1wv2ttLSUGjduTI899hitXLlS6u4A2AzHkOG+UlRURD/88APt3buXTp8+TVu3bpW6S1BLrl+/Trt376bNmzdTXl4evfzyy1J3CcAuKMhwX7lx4wY988wzFBgYSDNnzqSBAwdK3SWoJWfOnKFnn32WwsLC6NNPP6UOHTpI3SUAu2CXNQAAgAzgLGsAAAAZQEEGAACQAZuOIRsMBtLr9aRWq/GLKQAAAHZgZjIYDOTh4WH1/gA2FWS9Xm+6Jy8AAADYr0WLFqafJLXEpoJsrOgtWrSw+wb9AAAA7qyyspLOnTtX493zbCrIxt3UGo0GBRkAAMABNR3yxUldAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgA7X+a0/MTCUVlbXdLIDdvLUa3JkOAGpNrRZkZqahSw9S+qVbtdksgEM6RQTRphe6oSgDQK2o1V3WJRWVKMagGMcu3cLeHACoNbW+y9ro2Ju9yccTd/0C+Skur6RO7+6WuhsA4GYkK8g+nhry8ZSseQAAAFnBWdYAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMoCCDAAAIAMoyAAAADKAggwAACADKMgAAAAygIIMAAAgAyjIAAAAMuAhdQeUiJmpRF8idTfARYorKqv8X0Kk0kjYG3Albw9vUqlUUncDgIhQkO3GzJScmkwnb5yUuivgImzQEtEcIiJK2BhPKnWFtB0Cl+kY1pG+6fsNijLIAgqynUr0JSjG9zmVuoL8W0+XuhtQC05cP0El+hLy0fpI3RUAFGQx0oalkbeHt9TdAAA7lehLKGFjgtTdADCDgiyCt4c3vlkDAIBT4CxrAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEUZAAAABlAQQYAAJABFGQAAAAZQEEGAACQARRkAAAAGUBBBgAAkAEPqTsAoDTMTCX6Eqm7ASJUXX5Ylsrn7eFNKpVK6m6IhoIMYAdmpuTUZDp546TUXQEnSdiYIHUXQKSOYR3pm77fKL4oY5c1gB1K9CUoxgAyc+L6iftiTwe2kAEclDYsjbw9vKXuBsB9g5mptLLU5teX6EsoKSXJ9L+95LarGwUZwEHeHt7ko/WRuhsA9wWxh4McOfQgt13d2GUNAACSk+JwkNx2dWMLGQAAZMXVh4NK9CWyPJkPBRkAAGTFXQ8HuXVBduR6UjHXL8rtBAIAAJAPty3Izrie1N5dHnI7gQAAAOTDbU/qwgkEAAAgJ267hVyVu55AAAAA8oGCTO57AgEAAMiH2+6yBgAAkBNsIbsh/FqR4/ArQc6BKw4AqkNBdjP4tSLnwXkBjsMVBwDVYZe1m8GvFYEc4IoDgOqwhezG8GtFUNtwxQGAMBRkN4azywEA5AO7rAEAAGTAOVvIzEQVxTW/rryyyv/FRKSx7f21PkQ4+QMAAO5j4gsyM9GKRKLLh214rRcRrbz3/4fNiFRltrXRuCvRmB0oygAAcN8SX5Arim0rxkTkoyqjbN0z9rdx+dC9djx97Y8FAABQAOee1PXaBSJPJ54kVF5MtKCZ894P3B5uiiIt3FhFHnBjFnlybkH29MFWLMgWbooiL7j8STq4MYs84bInEWzd2nJ0qwDfYp0LN0UBuMd4YxZc9igvKMgOcnRry56tAnyLdR3cFAWUjJmptLLU7rgSfQklpSSZ/ncUNhZcAwXZQbWxtYVvsa6Dm6KAUjnr0IuYQwbYWHANFGQncPbWltJvLyjXE6eUckIRtj7AGjkcesHGgmugIDsBtrb+RyknTsn5C0/70Pa0rPcy2RdlfHGQXm0felH6xoLcoSCDU8nh27vSnbpxirqu7yp1N2qE3ZbSw8bA/QUFWSLWduvaumtVqi0UW/ue+niqxW/vOo2u1vqNb/Suc+L6CcovzXfpFhq2wsFW9hwqk+uVLyjIErBnt661YiLFFoo9fTeezfl3Um1ZucOZ1cxM43aNo9M3T9dKe67+soOtcLCFmENlcrryBQVZAs7arSvFiRXO6LuYftt7wpjYk7eUtoVWXFFca8W4NuDkodondu+dFOtMbR0qc/V4lL4gW/ulqPJiy///nYJ/DcqRrTa57Ia1t+9i+y32hDFH2rb3BCtXfRg5chMaoUMGlrjqMIJU18sq7YvU30lVFJ2x907qvRqu2BNWW5+50hZke34pyto9rRX8a1BKPimjtvsuxQlj9p5gZa2A18aHZFVChwwsqemLhyN9l/J6WUfPVJdDIZeyKEq9B8wZHP1ccuRL79/bFTt2pC3IdvxSlFX4NSi3U9tb57ayVsCl/JCsSU1fPBzpu5Rn3Dt6pnrVQm7L1r21MejoB7RciqJc1zFXkMueAel3WRs58ktR+DUotyVm61yqwwRK/pAU23elHJpx5iVnzviAlrIoKnnvnb3k8iXIpoLMzEREVFlZWX1ipYHIw+d//1t6jZCqsRrdvT97aBxv21BpIG+1t+n/SrUd/RYZj7albdtL5UVeai/72lb9L/7Hx38kb40dH5KVJdQ/pb+pH2LytrfvYvpNJK7vcpnnUsm8mUlFZUXkrbVvnjtrebvr+i22bVes38baaaylQlRc0yuIqLy8nM6dO2dzBwEAAMBcixYtyNPTU3C6TQXZYDCQXq8ntVot+QkPAAAASsLMZDAYyMPDg9RqteDrbCrIAAAA4FrCpRoAAABqDQoyAACADKAgAwAAyAAKMgAAgAygIAMAAMgACjIAAIAMoCADAADIAAoyAACADKAgAwDIDO7X5J4c+rWnI0eO0MGDByknJ4eIiOrXr0/dunWjLl26CMZcuXKFdDod1a1bl4iIfvvtN1q6dCn9+eefFBERQZMnT6Zu3brV2LbBYLB46zGDwUBXrlyhJk2aWIwrKSmh9PR0Cg4OpjZt2phNKy0tpY0bN1JycrJguxkZGZSenk4JCQnUtGlT+v333+nzzz8ng8FAQ4YMocTExBr7XlXTpk1p586d1Lx5c7vijHr16kUrV66kiIgIwdccP36cgoKCKCoqioiI1qxZYzbPX3zxRRo+fLjVdhYvXkxHjhyhfv360fDhw2nNmjX0/vvvk8FgoMcff5zeeecd8vCoeRgxM6WlpdGFCxeoQYMGlJiYSFqtVvD1ZWVlpFarTa/5448/aMWKFaa+P//886a8LNm+fTsdOXKEEhMTqXv37rRnzx5asGCBqd/jx4+vsc9CLl++TLNnz6YVK1bU+NqioiLauHGjKe+nn36aQkJCrMbk5eXRqVOn6MEHH6Tg4GC6efMmff3111RWVkZPPvkktW7d2qF+5+bm0pdffkmzZs1yKP7WrVu0bds2wfWEmSk7O5saN25MHh4eVF5eTt9//z2VlZVRv379TOu+JR999BENHTrU6ni2pqSkhNavX0/79u2ja9eukVqtpqZNm9LgwYPpkUceqTH+5s2btGLFimqfa3FxcTR69GgKDQ0VjD179iwdOnSIunXrRq1ataLMzExatGgRlZWV0YgRI6hXr1525+Pl5UUZGRk2LesrV65QYGAg+fn5mT1fUVFBBw8epJ49e1qMe+mll2jYsGH00EMP2d0/onu/cbBlyxaL82zQoEFW79lstGfPnmrLbODAgVY/F7/77jtKSkoiHx/Hf1Xp2rVrtGTJEovjZfTo0aTRaGx+r6ysLNP63bZtW4f7REREbIfc3Fzu0aMHq1QqjoiI4C5dunCXLl04IiKCVSoV9+jRg3Nzcy3GdunShbdt28bMzFu2bGG1Ws0DBw7kN954g4cMGcJardY03ZI7d+7wk08+yTqdjsPCwvitt95ivV5vmp6Tk8Nqtdpi7H//+19TH9VqNffs2ZOvXr1qUywz83fffccajYZDQkLYz8+Pd+3axYGBgdy7d29OTExkjUbD69atsxi7aNEii38ajYZnzJhheixk69atFv80Gg0vXrzY9NiS9u3b865du5iZefny5ezt7c1TpkzhJUuW8CuvvMJ+fn789ddfC7Y9Z84c9vf35yeeeILr16/P8+bN45CQEH733Xd57ty5HBoayrNmzbIYm5SUxLdv32Zm5ry8PI6NjWWVSsWhoaGsVqu5VatWfP36dcG24+PjedOmTczMvG/fPvby8uL27dvzU089xR07dmQfHx8+cOCAxdilS5eyh4cHx8TEcJ06dXjNmjXs7+/PY8eO5QkTJrC3tzcvXLhQsO2anDx5UnC8tG7dmvPy8piZ+c8//+TIyEgOCAjgzp07c3BwMIeFhfHFixcF3/vw4cMcEBDAKpWKg4KC+NixYxwVFcXNmzfn6Oho9vb25vT0dKf3W2x8ZmYmR0REsFqt5mbNmvHFixc5JiaGfX192cfHh+vWrcvnzp0TfG+VSsUajYZ79+7N3377LZeVldncr/Pnz3NERASHhYVx48aNWaVScf/+/Tk2NpY1Gg0/+eSTXFFRIRh/5MgRDgoK4kaNGvGoUaN42rRpPG3aNB41ahSHh4dzcHAwHz161GJsamoqe3p6cnBwMOt0Ok5NTeXQ0FDu3bs39+rVizUaDf/73/8WbPvVV1+1+KdWqzk5Odn02JKrV69y586dWa1Ws0aj4ZEjR3JBQYFpek2fa8bPw+bNm/O8efP42rVrgq/9u/Pnz3PTpk1Zp9NxfHw8Dxs2jIcNG8bx8fGs0+m4WbNmfP78ecH43Nxc7tKlC6vVavbw8GC1Ws0xMTFcv3591mg0/Prrr1vtd506dXjcuHF86NAhm/tsdPToUQ4ICOCYmBju0aOHad499dRTHBgYyHFxcXz37l2LsRMnTjTN4+LiYn7iiSdYrVab5uXDDz9stgzsZVdBfuKJJ7hbt26cmZlZbVpmZibHxcXx0KFDLcb6+vqaPohiY2N53rx5ZtM/++wz7tixo2DbU6ZM4RYtWvCmTZt4+fLlHBERwf379zetuDk5OaxSqSzGDh48mPv37883btzg8+fPc//+/TkqKoovXbpkirU2cP/xj3/wu+++y8zM69ev58DAQH7nnXdM0xcsWMAdOnSwGKtSqTg8PJwjIyPN/lQqFTdq1IgjIyM5KipKsG3jglapVIJ/Qn339vbm7OxsZmbu2LEjL1u2zGz6unXruE2bNoJtR0dH83fffcfM9z6MNRoNr1271jQ9JSWFmzVrJthv45eziRMncps2bUzL//LlyxwTE8MvvPCCYNt16tQxfYDHx8dX+1B68803uXv37hZj27RpY8p1z549rNPp+PPPPzdNX7lyJbdu3VqwbaEvQca/Tz75RHCeV8372Wef5bi4ONMXk4KCAu7duzc//fTTgm337t2bx44dy3fv3uUPP/yQw8PDeezYsabpzz33HA8ePNhibEZGhtW/DRs2WB3nd+7csfr322+/CcYPGjSIBw4cyKdOneJXXnmFW7duzYMGDeLy8nIuLS3lAQMG8IgRIwTbVqlUvHLlSh40aBBrtVoOCQnhl19+mU+fPi0YY5SUlMQTJkxgg8HAzMzz5s3jpKQkZmY+d+4cR0ZG8uzZswXjY2Njefz48ab4qgwGA48fP567du1qMbZbt278//7f/2Pme58NQUFBPHPmTNP06dOnc58+fazm3aFDB05ISDD7U6lU3LlzZ05ISOCHH37YYmxycjLHxsby0aNHedeuXRwTE8OdOnXi/Px8Zrb+mWhse/fu3fzyyy9z3bp1WavV8sCBA3nbtm1cWVkpGMd8b5wOGjSI79y5U23anTt3eNCgQfzoo48Kxj/11FM8ePBgvnPnDpeWlvKLL77IycnJzMz873//m0NCQgS/NKtUKn7nnXe4Y8eOrFKp+IEHHuBPPvmEb968abXPRt27d+e3337b9HjNmjUcGxvLzMz5+fncoUMHnjJlisVYtVptWr9nzJjB4eHhvGfPHi4qKuJ9+/ZxdHQ0T58+3aZ+WGJXQfbz8+Pjx48LTj927Bj7+flZnBYQEMAZGRnMzBwWFmb63+jChQvs4+Mj+N5NmjThvXv3mh7fuHGDu3Tpwo8++iiXlpZaLaphYWF86tQp02ODwcAvvPACN2nShP/4448aC7Kvry9nZWWZYrVardn7/fHHH4J5T5gwgTt06MBnzpwxe97Dw4N///13wTaN+vbty/3796+258GW+JCQED527Bgz35sHJ0+eNJt+4cIF9vb2Foz39vY2fWlhZtZqtfyf//zH9Dg7O1twmVUtTC1btqy2Fb97926rX0R8fX357NmzzMxcr149i30XmueW+l31gz0rK8vqWBPzJahq3k2bNuWff/7ZbPr+/fu5cePGgm0HBQWZxkp5eTmr1Wo+fPiwaXp6ejo3atTI7n5X/RZfU95Cf9biQ0ND+cSJE8zMXFhYyCqVin/77TezvJs0aWK1beN8y83N5fnz53OrVq1YrVZz586dedmyZYJbLT4+PmZb32VlZazVak0f0Fu2bOHIyEjBtnU6nWmsWXL27FnW6XQWp9WpU8e0JVhZWckeHh5mn5GnT5/mevXqCb73+++/z1FRUdW2om1Zvxs2bGg2NoxffDp06MB5eXk2bSEb53l5eTlv2LDBtMevYcOGPHPmTMGtXG9vb6tflk6dOmX1s6VOnTpmnyWFhYWs1WpNBX7NmjXcsmXLGvt97NgxnjhxIgcGBrKXlxc/+eST1dY5S33/448/TI8rKytZq9VyTk4OMzP//PPP3LBhwxrbbtu2Lf/rX/8ym75161Zu0aKF1fatseukLi8vL7p7967g9IKCAvLysvxj2vHx8bR+/XoiIurYsSOlpaWZTd+7dy81atRI8L1v3Lhhdnypbt26tHv3biooKKB+/fpRcXGxYGxJSYnZcU6VSkVLliyhAQMGUHx8fI2/9ezv7095eXlERHT79m3S6/Wmx0T3jvn9/fiN0dKlS2nWrFmUmJhIixcvttqOJampqfTII49Qp06daPv27XbFJiUl0ZIlS4jo3vzfvHmz2fSNGzdSs2bNBOPr169PZ86cISKi8+fPU2VlpekxEdHvv/9OYWFhgvHGn+q8desWRUdHm01r1qwZXb16VTA2NjaWtm3bRkRE0dHRlJGRYTb95MmTFBwcbDE2JCSELl26REREV69eJb1eT3/++adp+qVLlwRjiYgaNGhAKSkpZDAYLP4dP35cMJbof3mXlpZSgwYNzKY1atSIbty4IRhbXl5O3t73fhxdq9WSj4+P2bHXunXrmo29qoKDg2n58uWUlZVV7e/ixYs1jh9/f396//33ac+ePRb/li1bJhhbWFhomqe+vr7k6+trlnvjxo0pNzfXavtGYWFhNG3aNDp79iylpaVRmzZt6NVXX602L40CAwOpoKDA9Li4uJj0er3pGGb79u3p2rVrgu3Vr1+fjhw5Ijj9yJEjVK9ePcHpxuWtVqtJp9NRQECAaZq/vz/duXNHMHb69Om0YcMGmjhxIr322mtUUVEh+Nq/u3PnDgUFBZkee3l5UUpKCkVGRtLDDz9M169ft/m9tFotDRs2jHbs2EEXL16kcePG0bp166hly5YWXx8YGEjZ2dmC75ednU2BgYGC0728vMx+yletVlNlZSXp9XoiIoqLi7P6/kYxMTH0xRdf0LVr12j58uV048YN6tu3r9XzS8LCwszGQ25uLun1eqpTpw4RETVv3pzy8/MF4439zsnJofbt25tNe/DBB+ny5cs19luQPdV70qRJHBERwSkpKWa7Ku7cucMpKSkcGRnJL774osXYM2fOcEhICCcnJ/OcOXPYz8+PR4wYwe+99x4nJyezl5cXr1y5UrDtli1b8o8//ljt+YKCAu7WrRs/+OCDgt8GO3fuzKtXr7Y4bfLkyRwYGGj1m+SIESM4NjaW165dywMGDODExETu2rUrnz17ljMzMzk+Pl5wV73RlStXuFevXty3b1++du2azVvIRidOnOA2bdrw+PHjuaioyKb4v/76iyMjI7lnz548depU9vb25h49evC4ceO4Z8+e7OnpaXGeGr355pscGhrKY8eO5aioKJ4+fTo3adKElyxZwkuXLuXGjRsLHt9SqVTcr18/HjJkCAcFBVU7P+DQoUNWtxwOHDjAAQEBPHv2bP7ss8+4bt26/Oabb/K6det41qxZHBgYyPPnz7cYO3nyZG7evDm/++673KVLFx41ahS3atWKU1NTeceOHdyuXTseM2aMYNsDBgzgt956S3D6yZMnBXcFqlQqbteuHXfs2JH9/Px48+bNZtN/+eUXwS1cZuZWrVqZbS1t376di4uLTY8PHTrE4eHhFmMfffRRnjNnjkP9ZmZOSEgQnKc1xUdHR5ttEX/xxRdmW7Tp6elcv359wfeuuivQkjt37lQ75GI0atQojo+P57Nnz/LFixdN5xkYpaWlWd0rsXjxYvby8uIpU6bw1q1b+dChQ3zo0CHeunUrT5kyhb29vc0OeVTVvn17Tk1NNT0+ffq02fHqX3/91eqeIKOCggJOTk7m9u3b8+nTp1mr1da4frdr167a+GJmrqio4MGDB3OTJk1s3kK2xGAwCG5tvvXWWxwUFMQff/wxZ2RkcE5ODufk5HBGRgZ//PHHHBwcbPUwwZAhQ/iJJ57gwsJCLi8v51deecXs8NehQ4cEx0tNY+X8+fNmhw3+7uWXX+a2bdtyamoq79mzhx9++GFOSEgwTd+xYwdHR0dbjFWpVDxhwgR+9dVXOSwsrNr8SU9P57p16wq2XRO7CnJpaSm/8MIL7OnpyWq1mnU6Het0Olar1ezp6ckTJ07k0tJSwfgLFy7w8OHD2d/f37QrTavVclxcHH///fdW237ppZcEi97du3c5NjZWcPDNnTvXdEzJkokTJ1r9oMrJyeE+ffqwn58fJyYm8u3bt/nFF180OyniwoULVvvPfG+Az50713Tigj0FmfneSQQTJkzg5s2b2xx/69YtfuONN7hNmzas0+nY09OTIyIi+JlnnhE8UcWosrKS33vvPX7sscd47ty5bDAYeP369dy4cWMOCQnh0aNHc2FhocXY0aNHm/1t2LDBbPrrr7/OiYmJVts/cOAAd+3atdru10aNGlk9KauwsJDHjRvHbdu25fHjx3NZWRl/+OGH7OnpySqVihMSEqyu0L/++qvZh6yl909LS7M47e233zb727Fjh9n01157jYcPHy743m+//TavX79ecPrMmTP58ccftzgtJSWF16xZIxibn5/Pq1atEpy+bNkyqycY5uTkmB17q2rChAm8fPlywdj333+f+/XrJzi9puJgTW5urmmcqNVqjoiIMNttvGnTJv7000+tvse3337LsbGx7OHhYRpnHh4eHBsbW23sVrVkyRLevn274PQZM2bw888/b3Mu69ev53r16rFara5x/Z42bZrgcdqKigoeOHCg1YIcGRlp83FXS+bNm8cNGjQwO9ShUqm4QYMGVr/YMd87zBcdHc0eHh6s1Wo5MDDQdAIq873zPISOxYoZK8z3vvwMGzbMtKzj4uLMTrTcuXMnb9y40WJsfHy82bH+v4/5OXPmcHx8vMN9UzHbf8Hb3bt3KT093exU95iYGNMmvw1b5XT9+nUyGAxUt25dq5e/GN26dYuuXr1KDzzwgMXpBQUFdPz4cYqPj7c9EZEuXrxIxcXF1KpVK5su/TFKT0+nffv2UXJystkuJ1v98MMPtHfvXpoxY4bVXcZyVlRURBqNhnQ6XY2vvXHjBl28eJEMBgM1aNCAIiMjHWqztLSUKioqyN/f36F4OSguLiaNRiN4aEiusrKySKfTCe52dobz589TWVmZ3etjVRUVFXTz5k0iIps/m5ztypUrlJ6eTr179yZfX1/B1+n1eiouLhb83NXr9fTXX385fCmZrbKyssxqgbXdxVUVFxfTvn37qLy8nLp27Wr1sriqLl26RE2aNDHb5e2I0tJS0uv1gocbHXHx4kXy9PSk8PBwh+IdKsgAAADgXHbfqaukpIT27dtndnKPUWlpKa1evdqhjly+fJnGjBkjSdu2cNe8XUXKvG1pW67E9N3V89yV49TVed+PpMxbyWOtJi5t257925ZusPHXX3+Zptd0mr01Nd20QOzNPcRwZdtyztuVpMxb7A0ypCSm766c564ep67M+34lZd5KHmvWuLptuw60vPHGG9S2bVs6duwY3b59m1555RXq0aMHpaWlCd6y0uiHH36wOv3ixYt2t929e3eb2hZLTNtKzlsMKfMW27aUxPRdynkudpxKmbdSSZm3kseaGC5v257qLeYGG2JutiC2bbHcNW8xpMxbbNtSEntTEqnmudhxKmXe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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "kpms_model.GenerateResults.populate()" ] From b50860ecc4c2b951fc8ac693d4d8f8f96595be83 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Sun, 17 Mar 2024 20:13:27 +0100 Subject: [PATCH 70/90] update `kpms_pca.py` --- element_moseq/kpms_pca.py | 332 +++++++++++++------------------------- 1 file changed, 112 insertions(+), 220 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index 58d81c6..d2836b0 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -1,8 +1,6 @@ -from datetime import datetime +from datetime import datetime, timezone import inspect -import os from pathlib import Path -import pickle from typing import Optional import importlib @@ -11,16 +9,7 @@ import numpy as np from element_interface.utils import find_full_path -from .readers.kpms_reader import generate_dj_config, load_dj_config -from keypoint_moseq import ( - setup_project, - load_config, - load_keypoints, - format_data, - load_pca, - fit_pca, - save_pca, -) +from .readers.kpms_reader import generate_kpms_dj_config, load_kpms_dj_config schema = dj.schema() @@ -112,11 +101,11 @@ def get_kpms_processed_data_dir() -> Optional[str]: @schema class PoseEstimationMethod(dj.Lookup): - """Table for storing the pose estimation method used to obtain the keypoints data. + """Table for storing the pose estimation methods supported by the keypoint loader of keypoint-moseq package. Attributes: format_method (str): Pose estimation method. - pose_estimation_desc (str): Pose estimation method description. + pose_estimation_desc (str): Pose estimation method description with the formats supported. """ definition = """ @@ -138,7 +127,7 @@ class PoseEstimationMethod(dj.Lookup): @schema class KeypointSet(dj.Manual): - """Table for storing the keypoint sets and their associated videos. + """Table for storing the keypoint data and videos directory to train the model. Attributes: kpset_id (int): Unique ID for each keypoint set. @@ -149,7 +138,6 @@ class KeypointSet(dj.Manual): """ definition = """ - -> Session kpset_id : int --- -> PoseEstimationMethod @@ -159,7 +147,7 @@ class KeypointSet(dj.Manual): """ class VideoFile(dj.Part): - """IDs and file paths of each video file. + """IDs and file paths of each video file that will be used to train the model. Attributes: video_id (int): Unique ID for each video. @@ -174,87 +162,6 @@ class VideoFile(dj.Part): """ -@schema -class RecordingInfo(dj.Imported): - """Automated table to store the average metadata of the videoset associated with a kpset_id. - - Attributes: - KeypointSet (foreign key) : Unique ID for each video set. - px_height_average (smallint) : Average height of the video set (pixels). - px_width_average (smallint) : Average width of the video set (pixels). - nframes_average (int) : Average number of frames of the video set (frames). - fps_average (int) : Optional. Average frames per second of the video set (Hz). - recording_duration_average (float) : Average video duration (s) of the video set (nframes / fps). - """ - - definition = """ - -> KeypointSet - --- - px_height_average : smallint # Average height of the video set (pixels) - px_width_average : smallint # Average width of the video set (pixels) - nframes_average : int # Average number of frames of the video set (frames) - fps_average = NULL : int # Optional. Average frames per second of the video set (Hz) - recording_duration_average : float # Average video duration (s) of the video set (nframes / fps) - """ - - @property - def key_source(self): - """Defines order of keys for the make function when called via `populate()`""" - return KeypointSet & KeypointSet.VideoFile - - def make(self, key): - """ - Make function to populate the `RecordingInfo` table. - - Args: - key (dict): A dictionary containing key information for the session - - Raises: - - High-Level Logic: - 1. Fetches the file paths and video IDs from the KeypointSet.VideoFiles table. - 2. Iterates through the file paths and video IDs to obtain the video metadata using OpenCV. - 3. Calculate the average video metadata and insert it into the RecordingInfo table. - """ - - file_paths, video_ids = (KeypointSet.VideoFile & key).fetch( - "video_path", "video_id" - ) - - px_height_list = [] - px_width_list = [] - nframes_list = [] - fps_list = [] - recording_duration_list = [] - - for fp, video_id in zip(file_paths, video_ids): - file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() - - cap = cv2.VideoCapture(file_path) - px_height_list.append(int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) - px_width_list.append(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))) - fps_list.append(int(cap.get(cv2.CAP_PROP_FPS))) - nframes_list.append(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))) - cap.release() - - px_height_average = int(np.mean(px_height_list)) - px_width_average = int(np.mean(px_width_list)) - fps_average = int(np.mean(fps_list)) - nframes_average = int(np.mean(nframes_list)) - recording_duration_average = int(np.mean(nframes_list) / np.mean(fps_list)) - - self.insert1( - { - **key, - "px_height_average": px_height_average, - "px_width_average": px_width_average, - "nframes_average": nframes_average, - "fps_average": fps_average, - "recording_duration_average": recording_duration_average, - } - ) - - @schema class Bodyparts(dj.Manual): """Table for storing the bodyparts used in the analysis. @@ -282,10 +189,10 @@ class Bodyparts(dj.Manual): @schema class PCATask(dj.Manual): """ - Table to define the PCA task. + Staging table for the PCA task and its output directory. Attributes: - Bodyparts (foreign key) : Unique ID for each bodypart. + Bodyparts (foreign key) : Bodyparts Key output_dir (str) : KPMS's output directory relative to root task_mode (str) : 'load': load computed analysis results, 'trigger': trigger computation """ @@ -293,21 +200,21 @@ class PCATask(dj.Manual): definition = """ -> Bodyparts --- - output_dir='' : varchar(255) # KPMS's output directory relative to root - task_mode='load' : enum('load', 'trigger') # default = 'load': load computed analysis results, 'trigger': trigger computation + kpms_project_output_dir='' : varchar(255) # KPMS's output directory relative to root """ @schema -class FormattedDataset(dj.Imported): +class LoadKeypointSet(dj.Imported): """ - Table for storing the formatted dataset and update the `config.yml` by creating a new `dj_config.yml` in the project path (`output_dir`) + Table to create the `kpms_project_output_dir`, and create and update the `config.yml` by creating a new `dj_config.yml`. Attributes: PCATask (foreign key) : Unique ID for each PCATask. coordinates (longblob) : Dictionary mapping filenames to keypoint coordinates as ndarrays of shape (n_frames, n_bodyparts, 2[or 3]) confidences (longblob) : Dictionary mapping filenames to `likelihood` scores as ndarrays of shape (n_frames, n_bodyparts) formatted_bodyparts (longblob) : List of bodypart names. The order of the names matches the order of the bodyparts in `coordinates` and `confidences`. + average_frame_rate (float0 : Average frame rate of the trained videos """ definition = """ @@ -315,26 +222,28 @@ class FormattedDataset(dj.Imported): --- coordinates : longblob # Keypoint coordinates confidences : longblob # Keypoint confidences - formatted_bodyparts : longblob #Formatted bodyparts + formatted_bodyparts : longblob # Formatted bodyparts + average_frame_rate : float # Average frame rate of the trained videos """ def make(self, key): """ - Make function to generate and update `dj_config.yml` and to format keypoint coordinates and confidences for inference. + Make function to: + 1. Generate and update the `dj_config.yml` with both the `video_dir` and the bodyparts. + 2. Create the keypoint coordinates and confidences scores to format the data for the PCA fitting. Args: key (dict): Primary key from the PCATask table. Raises: - ValueError: If `task_mode` does not match either 'load' or 'trigger' High-Level Logic: - 1. Fetches the anterior_bodyparts, posterior_bodyparts, use_bodyparts, output_dir, and task_mode from the PCATask table. - 2. Fetches the format_method, kpset_config_dir, and kpset_videos_dir from the KeypointSet table. - 3. Based on the task_mode, it either triggers the computation or loads the computed analysis results. - 4. If task_mode='trigger', it creates an output_dir if it does not exist, creates a `dj_config` file with the default values from the pose estimation config, and update it with the video_dir and bodyparts used in the pipeline. - 6. If task_mode='load', it loads the `dj_config` file and updates it with the video_dir and bodyparts used in the pipeline. - 7. Then, it loads keypoint tracking results from one or more files and formats them for PCA analysis. + 1. Fetches the bodyparts, output_dir and keypoint method, and keypoint config and videoset directories. + 2. Creates the `kpms_project_output_dir` (if it does not exist), and generates the kpms default `config.yml` with the default values from the pose estimation (DLC) config. + 3. Create a copy of the kpms `config.yml` named `kpms_dj_config.yml` that will be updated with both the `video_dir` and bodyparts + 4. Load keypoint data from deeplabcut, sleap, anipose, sleap-anipose, nwb, or facemap. The coordinates and confidences scores will be used to format the data for modeling. + 5. Calculate the average frame rate of the videoset chosen to train the model. The average frame rate can be used to calculate the kappa value. + 6. Insert the results of this `make` function into the table. """ anterior_bodyparts, posterior_bodyparts, use_bodyparts = ( @@ -344,184 +253,167 @@ def make(self, key): "posterior_bodyparts", "use_bodyparts", ) - output_dir, task_mode = (PCATask & key).fetch1("output_dir", "task_mode") + kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") format_method, kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( "format_method", "kpset_config_dir", "kpset_videos_dir" ) - if task_mode == "trigger": - # create an output_dir if it does not exist, and create a config file with the default values from the pose estimation config - setup_project( - output_dir, deeplabcut_config=kpset_config_dir + "/config.yaml" - ) # creates KPMS default config file from dlc data - config = load_config(output_dir, check_if_valid=True, build_indexes=False) - - # update the config dict with the video_dir and bodyparts used in the pipeline - config_kwargs_dict = dict( - video_dir=kpset_videos_dir, - anterior_bodyparts=anterior_bodyparts, - posterior_bodyparts=posterior_bodyparts, - use_bodyparts=use_bodyparts, - ) - config.update(**config_kwargs_dict) - - # save the updated config dict to a different file named `dj_config.yml` - generate_dj_config(output_dir, **config) + from keypoint_moseq import setup_project, load_config, load_keypoints - elif task_mode == "load": - config = load_dj_config(output_dir) - - # update the config dict with the video_dir and bodyparts used in the pipeline - config_kwargs_dict = dict( - video_dir=kpset_videos_dir, - anterior_bodyparts=anterior_bodyparts, - posterior_bodyparts=posterior_bodyparts, - use_bodyparts=use_bodyparts, - ) - config.update(**config_kwargs_dict) + setup_project( + kpms_project_output_dir, deeplabcut_config=kpset_config_dir + "/config.yaml" + ) - # update the updated config dict to the file `dj_config.yml` - generate_dj_config(output_dir, **config) + kpms_config = load_config( + kpms_project_output_dir, check_if_valid=True, build_indexes=False + ) - else: - raise ValueError("task_mode should be either 'load' or 'trigger'") + kpms_dj_config_kwargs_dict = dict( + video_dir=kpset_videos_dir, + anterior_bodyparts=anterior_bodyparts, + posterior_bodyparts=posterior_bodyparts, + use_bodyparts=use_bodyparts, + ) + kpms_config.update(**kpms_dj_config_kwargs_dict) + generate_kpms_dj_config(kpms_project_output_dir, **kpms_config) - # load keypoints data from deeplabcut, sleap, anipose, sleap-anipose, nwb, facemap coordinates, confidences, formatted_bodyparts = load_keypoints( filepath_pattern=kpset_videos_dir, format=format_method ) + file_paths, video_ids = (KeypointSet.VideoFile & key).fetch( + "video_path", "video_id" + ) + fps_list = [] + for fp, video_id in zip(file_paths, video_ids): + file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() + cap = cv2.VideoCapture(file_path) + fps_list.append(int(cap.get(cv2.CAP_PROP_FPS))) + cap.release() + average_frame_rate = int(np.mean(fps_list)) + self.insert1( dict( **key, coordinates=coordinates, confidences=confidences, formatted_bodyparts=formatted_bodyparts, + average_frame_rate=average_frame_rate, ) ) @schema class PCAFitting(dj.Computed): - """Table for storing the PCA fitting analysis. + """Automated fitting of the PCA model. Attributes: - FormattedDataset (foreign key) : Unique ID for FormattedDataset. - pca_fitting_time (datetime) : Time of generation of the PCA fitting analysis. + LoadKeypointSet (foreign key) : LoadKeypointSet Key. + pca_fitting_time (datetime) : datetime of the PCA fitting analysis. """ definition = """ - -> FormattedDataset + -> LoadKeypointSet --- - pca_fitting_time=NULL : datetime # Time of generation of the PCA fitting analysis + pca_fitting_time=NULL : datetime # datetime of the PCA fitting analysis """ def make(self, key): """ - Make function to fit PCA model and save the PCA model, data, and metadata to files. + Make function to format the keypoint data, fit the PCA model, and store it as a `pca.p` file in the output directory. Args: - key (dict): Primary key from the FormattedDataset table. + key (dict): LoadKeypointSet Key Raises: High-Level Logic: - 1. Fetches the task_mode and output_dir from the PCATask table. - 2. If task_mode='trigger', it loads the `dj_config` file and formats the keypoint coordinates and confidences for PCA analysis. - 3. Then, it fits the PCA model and saves the PCA model, data, and metadata to files. - 4. If task_mode='load', it does not perform any computation and sets the pca_fitting_time to NULL. - 5. Finally, it inserts the pca_fitting_time into the PCAFitting table. + 1. Fetch the `kpms_project_output_dir` from the PCATask table. + 2. Load the `kpms_dj_config` file that contains the updated `video_dir` and bodyparts, \ + and format the keypoint data with the coordinates and confidences scores to be used in the PCA fitting. + 3. Fit the PCA model and save it as `pca.p` file in the output directory. + 4.Insert the creation datetime as the `pca_fitting_time` into the table. """ - task_mode, output_dir = (PCATask & key).fetch1("task_mode", "output_dir") - - if task_mode == "trigger": - config = load_dj_config(output_dir, check_if_valid=True, build_indexes=True) - coordinates, confidences = (FormattedDataset & key).fetch1( - "coordinates", "confidences" - ) - - data, metadata = format_data( - **config, coordinates=coordinates, confidences=confidences - ) - - pca = fit_pca(**data, **config) - - # save the pca model to a file - save_pca( - pca, output_dir - ) # `pca.p` as the first pca model stored in the output_dir - # save the data and metadata to files - data_path = os.path.join(output_dir, "data.pkl") - with open(data_path, "wb") as data_file: - pickle.dump(data, data_file) + kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") - metadata_path = os.path.join(output_dir, "metadata.pkl") - with open(metadata_path, "wb") as metadata_file: - pickle.dump(metadata, metadata_file) + from keypoint_moseq import format_data, fit_pca, save_pca - creation_time = datetime.utcnow() + kpms_default_config = load_kpms_dj_config( + kpms_project_output_dir, check_if_valid=True, build_indexes=True + ) + coordinates, confidences = (LoadKeypointSet & key).fetch1( + "coordinates", "confidences" + ) + data, _ = format_data( + **kpms_default_config, coordinates=coordinates, confidences=confidences + ) - else: - creation_time = None + pca = fit_pca(**data, **kpms_default_config) + save_pca(pca, kpms_project_output_dir) - self.insert1(dict(**key, pca_fitting_time=creation_time)) + creation_datetime = datetime.now(timezone.utc) + self.insert1(dict(**key, pca_fitting_time=creation_datetime)) @schema -class DimsExplainedVariance(dj.Computed): - """ - This is an optional table to compute and store the latent dimensions that explain a certain specified variance threshold. - - Attributes: - PCAFitting (foreign key) : Unique ID for each PCAFitting. - variance_percentage (float) : Percentage of variance explained by the selected components. - dims_explained_variance (int) : Number of components required to explain the specified variance. - latent_dim_desc (varchar) : Description of the latent dimensions that explain the specified variance. - """ +class LatentDimension(dj.Imported): + # """ + # Automated computation to calculate the latent dimension as one of the autoregressive hyperparameters (`ar_hypparams`) necessary for the model fitting. + # The analysis aims to select each of the components that explain the 90% of variance (fixed threshold). + + # Attributes: + # PCAFitting (foreign key) : PCAFitting Key. + # variance_percentage (float) : Variance threshold. Fixed value to 90%. + # latent_dimension (int) : Number of principal components required to explain the specified variance. + # latent_dim_desc (varchar) : Automated description of the computation result. + # """ definition = """ -> PCAFitting --- - variance_percentage : float # Percentage of variance explained by the selected components. - dims_explained_variance : int # Number of components required to explain the specified variance. - latent_dim_desc : varchar(1000) # Description of the latent dimensions that explain the specified variance. + variance_percentage : float # Variance threshold. Fixed value to 0.9 + latent_dimension : int # Number of principal components to explain the variance. + latent_dim_desc : varchar(1000) # Automated description of the computation result. """ def make(self, key): """ - Make function to compute and store the latent dimensions that explain a certain specified variance threshold. + Make function to compute and store the latent dimensions that explain a 90% variance threshold. Args: - key (dict): Primary key from the PCAFitting table. + key (dict): PCAFitting Key. Raises: High-Level Logic: - 1. Fetches the output_dir from the PCATask table. - 2. Loads the PCA model from the output_dir. - 3. Computes the cumulative sum of the explained variance ratio and determines the number of components required to explain the specified variance. - 4. If the cumulative sum of the explained variance ratio is less than the specified variance threshold, it sets the dims_explained_variance to the number of components and variance_percentage to the cumulative sum of the explained variance ratio. - 5. If the cumulative sum of the explained variance ratio is greater than the specified variance threshold, it sets the dims_explained_variance to the number of components and variance_percentage to the specified variance threshold. - 6. Inserts the variance_percentage, dims_explained_variance, and latent_dim_desc into the DimsExplainedVariance table. + 1. Fetches the output directory from the PCATask table and load the PCA model from the output directory. + 2. Set a specified variance threshold to 90% and compute the cumulative sum of the explained variance ratio. + 3. Determine the number of components required to explain the specified variance. + 3.1 If the cumulative sum of the explained variance ratio is less than the specified variance threshold, \ + it sets the `latent_dimension` to the total number of components and `variance_percentage` to the cumulative sum of the explained variance ratio. + 3.2 If the cumulative sum of the explained variance ratio is greater than the specified variance threshold, \ + it sets the `latent_dimension` to the number of components that explain the specified variance and `variance_percentage` to the specified variance threshold. + 4. Insert the results of this `make` function into the table. """ + from keypoint_moseq import load_pca + + kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") + pca = load_pca(kpms_project_output_dir) - output_dir = (PCATask & key).fetch1("output_dir") variance_threshold = 0.90 + cs = np.cumsum( + pca.explained_variance_ratio_ + ) # explained_variance_ratio_ndarray of shape (n_components,) - pca = load_pca(output_dir) - cs = np.cumsum(pca.explained_variance_ratio_) - # explained_variance_ratio_ndarray of shape (n_components,) - # Percentage of variance explained by each of the selected components. - # If n_components is not set then all components are stored and the sum of the ratios is equal to 1.0. if cs[-1] < variance_threshold: - dims_explained_variance = len(cs) + latent_dimension = len(cs) variance_percentage = cs[-1] * 100 latent_dim_desc = ( f"All components together only explain {cs[-1]*100}% of variance." ) else: - dims_explained_variance = (cs > variance_threshold).nonzero()[0].min() + 1 + latent_dimension = (cs > variance_threshold).nonzero()[0].min() + 1 variance_percentage = variance_threshold * 100 latent_dim_desc = f">={variance_threshold*100}% of variance explained by {(cs>variance_threshold).nonzero()[0].min()+1} components." @@ -529,7 +421,7 @@ def make(self, key): dict( **key, variance_percentage=variance_percentage, - dims_explained_variance=dims_explained_variance, + latent_dimension=latent_dimension, latent_dim_desc=latent_dim_desc, ) ) From fcd8e692503856963ca1c9b04bb2842ba179ad8b Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Tue, 19 Mar 2024 19:00:15 +0100 Subject: [PATCH 71/90] update the video train logic in `LoadKeypointSet` --- element_moseq/kpms_pca.py | 44 +++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/element_moseq/kpms_pca.py b/element_moseq/kpms_pca.py index d2836b0..aa6e262 100644 --- a/element_moseq/kpms_pca.py +++ b/element_moseq/kpms_pca.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Optional import importlib - +import os import cv2 import datajoint as dj import numpy as np @@ -193,14 +193,13 @@ class PCATask(dj.Manual): Attributes: Bodyparts (foreign key) : Bodyparts Key - output_dir (str) : KPMS's output directory relative to root - task_mode (str) : 'load': load computed analysis results, 'trigger': trigger computation + kpms_project_output_dir (str) : KPMS's output directory relative to root """ definition = """ -> Bodyparts --- - kpms_project_output_dir='' : varchar(255) # KPMS's output directory relative to root + kpms_project_output_dir='' : varchar(255) # KPMS's output directory relative to root """ @@ -241,7 +240,8 @@ def make(self, key): 1. Fetches the bodyparts, output_dir and keypoint method, and keypoint config and videoset directories. 2. Creates the `kpms_project_output_dir` (if it does not exist), and generates the kpms default `config.yml` with the default values from the pose estimation (DLC) config. 3. Create a copy of the kpms `config.yml` named `kpms_dj_config.yml` that will be updated with both the `video_dir` and bodyparts - 4. Load keypoint data from deeplabcut, sleap, anipose, sleap-anipose, nwb, or facemap. The coordinates and confidences scores will be used to format the data for modeling. + 4. Calculate the `filepath_patterns` that will select the videos from `KeypointSet.VideoFile` as the training set. + 4. Load keypoint data for the selected training videoset. The coordinates and confidences scores will be used to format the data for modeling. 5. Calculate the average frame rate of the videoset chosen to train the model. The average frame rate can be used to calculate the kappa value. 6. Insert the results of this `make` function into the table. """ @@ -254,36 +254,45 @@ def make(self, key): "use_bodyparts", ) kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") + kpms_project_output_dir = get_kpms_processed_data_dir()/ kpms_project_output_dir + format_method, kpset_config_dir, kpset_videos_dir = (KeypointSet & key).fetch1( "format_method", "kpset_config_dir", "kpset_videos_dir" ) + + file_paths, video_ids = (KeypointSet.VideoFile & key).fetch( + "video_path", "video_id" + ) + + kpset_config_dir = find_full_path(get_kpms_root_data_dir(), kpset_config_dir) + kpset_videos_dir = find_full_path(get_kpms_root_data_dir(), kpset_videos_dir) from keypoint_moseq import setup_project, load_config, load_keypoints setup_project( - kpms_project_output_dir, deeplabcut_config=kpset_config_dir + "/config.yaml" + kpms_project_output_dir, deeplabcut_config=kpset_config_dir / "config.yaml" ) kpms_config = load_config( - kpms_project_output_dir, check_if_valid=True, build_indexes=False + kpms_project_output_dir.as_posix(), check_if_valid=True, build_indexes=False ) kpms_dj_config_kwargs_dict = dict( - video_dir=kpset_videos_dir, + video_dir=kpset_videos_dir.as_posix(), anterior_bodyparts=anterior_bodyparts, posterior_bodyparts=posterior_bodyparts, use_bodyparts=use_bodyparts, + ) kpms_config.update(**kpms_dj_config_kwargs_dict) - generate_kpms_dj_config(kpms_project_output_dir, **kpms_config) + generate_kpms_dj_config(kpms_project_output_dir.as_posix(), **kpms_config) + + filepath_patterns = [(kpset_videos_dir / (os.path.splitext(os.path.basename(path))[0] + '*')).as_posix() for path in file_paths] coordinates, confidences, formatted_bodyparts = load_keypoints( - filepath_pattern=kpset_videos_dir, format=format_method + filepath_pattern=filepath_patterns, format=format_method ) - file_paths, video_ids = (KeypointSet.VideoFile & key).fetch( - "video_path", "video_id" - ) fps_list = [] for fp, video_id in zip(file_paths, video_ids): file_path = (find_full_path(get_kpms_root_data_dir(), fp)).as_posix() @@ -336,11 +345,12 @@ def make(self, key): """ kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") + kpms_project_output_dir = get_kpms_processed_data_dir() / kpms_project_output_dir from keypoint_moseq import format_data, fit_pca, save_pca kpms_default_config = load_kpms_dj_config( - kpms_project_output_dir, check_if_valid=True, build_indexes=True + kpms_project_output_dir.as_posix(), check_if_valid=True, build_indexes=True ) coordinates, confidences = (LoadKeypointSet & key).fetch1( "coordinates", "confidences" @@ -350,7 +360,7 @@ def make(self, key): ) pca = fit_pca(**data, **kpms_default_config) - save_pca(pca, kpms_project_output_dir) + save_pca(pca, kpms_project_output_dir.as_posix()) creation_datetime = datetime.now(timezone.utc) self.insert1(dict(**key, pca_fitting_time=creation_datetime)) @@ -399,7 +409,9 @@ def make(self, key): from keypoint_moseq import load_pca kpms_project_output_dir = (PCATask & key).fetch1("kpms_project_output_dir") - pca = load_pca(kpms_project_output_dir) + kpms_project_output_dir = get_kpms_processed_data_dir() / kpms_project_output_dir + + pca = load_pca(kpms_project_output_dir.as_posix()) variance_threshold = 0.90 cs = np.cumsum( From cb6e0326e3ff41d3015685653e232e19e9dd3db2 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 03:19:48 +0100 Subject: [PATCH 72/90] `images`:update flowchart, add new pipeline images --- images/flowchart.drawio | 28 +-- images/flowchart.svg | 2 +- images/pipeline.svg | 348 ++++++++++++++++++++------------- images/pipeline_kpms_model.svg | 172 ++++++++++++++++ images/pipeline_kpms_pca.svg | 112 +++++++++++ 5 files changed, 511 insertions(+), 151 deletions(-) create mode 100644 images/pipeline_kpms_model.svg create mode 100644 images/pipeline_kpms_pca.svg diff --git a/images/flowchart.drawio b/images/flowchart.drawio index 198b9d5..c1b9bd3 100644 --- a/images/flowchart.drawio +++ b/images/flowchart.drawio @@ -1,11 +1,11 @@ - + - + - - + + @@ -23,12 +23,12 @@ - + - + @@ -36,7 +36,7 @@ - + @@ -48,8 +48,8 @@ - - + + @@ -63,8 +63,14 @@ - - + + + + + + + + diff --git a/images/flowchart.svg b/images/flowchart.svg index 3b212dd..62cb73a 100644 --- a/images/flowchart.svg +++ b/images/flowchart.svg @@ -1,4 +1,4 @@ -
Enter keypoint data and body parts  into pipeline
Enter keypoint data an...
Synchronize data modalities & exploratory analysis
Synchronize data...
Visualize



 
Visualize...

 Export & publish

 
 
Export & publish...
Enter metadata
into pipeline
Enter metadata...
  Format dataset,  
 run PCA fitting, and select latent dimensions
Format dataset,...
   Run pre-fitting of   
AR-HMM and select kappa  
Run pre-fitting of...
Run full fitting and generate and store results
Run full fitting and ge...
Text is not SVG - cannot display
\ No newline at end of file +
Load keypoint data and body parts into pipeline
Load keypoint data and...
Synchronize data modalities & exploratory analysis
Synchronize data...
Visualize



 
Visualize...

 Export & publish

 
 
Export & publish...
Enter metadata
into pipeline
Enter metadata...
  Fit PCA, select latent dimension & kappa, 
and fit the model
Fit PCA, select laten...
 Film new videos & 
load metadata 
Film new videos &...
Pair videos with 
models & run 
inference
Pair videos with...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/pipeline.svg b/images/pipeline.svg index 103d8da..f3ac42b 100644 --- a/images/pipeline.svg +++ b/images/pipeline.svg @@ -1,224 +1,294 @@ - - - - + + + + -session.Session - - -session.Session +kpms_pca.PCAFitting + + +kpms_pca.PCAFitting - - -kpms_pca.KeypointSet - - -kpms_pca.KeypointSet + + +kpms_model.FullFittingTask + + +kpms_model.FullFittingTask - + -session.Session->kpms_pca.KeypointSet - +kpms_pca.PCAFitting->kpms_model.FullFittingTask + - + kpms_model.PreFittingTask - - -kpms_model.PreFittingTask + + +kpms_model.PreFittingTask - - -kpms_model.PreFitting - - -kpms_model.PreFitting + + +kpms_pca.PCAFitting->kpms_model.PreFittingTask + + + + +kpms_pca.LatentDimension + + +kpms_pca.LatentDimension - - -kpms_model.PreFittingTask->kpms_model.PreFitting - + + +kpms_pca.PCAFitting->kpms_pca.LatentDimension + - - -subject.Subject - - -subject.Subject + + +kpms_model.VideoRecording.File + + +kpms_model.VideoRecording.File - - -subject.Subject->session.Session - + + +kpms_model.PreFitting + + +kpms_model.PreFitting + - - -kpms_pca.KeypointSet.VideoFile - - -kpms_pca.KeypointSet.VideoFile + + + +kpms_model.VideoRecording + + +kpms_model.VideoRecording - + -kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile - +kpms_model.VideoRecording->kpms_model.VideoRecording.File + - - -kpms_pca.Bodyparts - - -kpms_pca.Bodyparts + + +kpms_model.InferenceTask + + +kpms_model.InferenceTask - + -kpms_pca.KeypointSet->kpms_pca.Bodyparts - +kpms_model.VideoRecording->kpms_model.InferenceTask + - - -kpms_pca.RecordingInfo - - -kpms_pca.RecordingInfo + + +kpms_model.FullFitting + + +kpms_model.FullFitting - + -kpms_pca.KeypointSet->kpms_pca.RecordingInfo - +kpms_model.FullFittingTask->kpms_model.FullFitting + - - -kpms_model.FullFittingTask - - -kpms_model.FullFittingTask + + +kpms_pca.KeypointSet + + +kpms_pca.KeypointSet - - -kpms_model.FullFitting - - -kpms_model.FullFitting + + +kpms_pca.KeypointSet.VideoFile + + +kpms_pca.KeypointSet.VideoFile - + -kpms_model.FullFittingTask->kpms_model.FullFitting - +kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile + - - -kpms_pca.PCAFitting - - -kpms_pca.PCAFitting + + +kpms_pca.Bodyparts + + +kpms_pca.Bodyparts - + -kpms_pca.PCAFitting->kpms_model.PreFittingTask - +kpms_pca.KeypointSet->kpms_pca.Bodyparts + - + + +kpms_model.Model + + +kpms_model.Model + + + + -kpms_pca.PCAFitting->kpms_model.FullFittingTask - +kpms_model.Model->kpms_model.InferenceTask + - - -kpms_pca.DimsExplainedVariance - - -kpms_pca.DimsExplainedVariance + + +kpms_model.Inference.GridMoviesSampledInstances + + +kpms_model.Inference.GridMoviesSampledInstances - + -kpms_pca.PCAFitting->kpms_pca.DimsExplainedVariance - +kpms_model.PreFittingTask->kpms_model.PreFitting + - + kpms_pca.PCATask - - -kpms_pca.PCATask + + +kpms_pca.PCATask kpms_pca.Bodyparts->kpms_pca.PCATask - - - - -kpms_pca.FormattedDataset - - -kpms_pca.FormattedDataset + + + + +kpms_model.Inference + + +kpms_model.Inference - + -kpms_pca.PCATask->kpms_pca.FormattedDataset - - - - -kpms_model.GenerateResults - - -kpms_model.GenerateResults +kpms_model.InferenceTask->kpms_model.Inference + + + + +kpms_pca.LoadKeypointSet + + +kpms_pca.LoadKeypointSet - + -kpms_pca.FormattedDataset->kpms_pca.PCAFitting - +kpms_pca.PCATask->kpms_pca.LoadKeypointSet + + + + +subject.Subject + + +subject.Subject + + + + + +session.Session + + +session.Session + + + + + +subject.Subject->session.Session + + + + +session.Session->kpms_model.VideoRecording + - + kpms_pca.PoseEstimationMethod - - -kpms_pca.PoseEstimationMethod + + +kpms_pca.PoseEstimationMethod + + +kpms_pca.PoseEstimationMethod->kpms_model.VideoRecording + + - + kpms_pca.PoseEstimationMethod->kpms_pca.KeypointSet - + + + + +kpms_pca.LoadKeypointSet->kpms_pca.PCAFitting + + + + +kpms_model.Inference->kpms_model.Inference.GridMoviesSampledInstances + + + + +kpms_model.Inference.MotionSequence + + +kpms_model.Inference.MotionSequence + - - -kpms_model.FullFitting->kpms_model.GenerateResults - + + + +kpms_model.Inference->kpms_model.Inference.MotionSequence + \ No newline at end of file diff --git a/images/pipeline_kpms_model.svg b/images/pipeline_kpms_model.svg new file mode 100644 index 0000000..b2cfe54 --- /dev/null +++ b/images/pipeline_kpms_model.svg @@ -0,0 +1,172 @@ + + + + + +kpms_model.VideoRecording + + +kpms_model.VideoRecording + + + + + +kpms_model.VideoRecording.File + + +kpms_model.VideoRecording.File + + + + + +kpms_model.VideoRecording->kpms_model.VideoRecording.File + + + + +kpms_model.InferenceTask + + +kpms_model.InferenceTask + + + + + +kpms_model.VideoRecording->kpms_model.InferenceTask + + + + +kpms_model.Model + + +kpms_model.Model + + + + + +kpms_model.Model->kpms_model.InferenceTask + + + + +kpms_model.Inference.GridMoviesSampledInstances + + +kpms_model.Inference.GridMoviesSampledInstances + + + + + +kpms_model.Inference + + +kpms_model.Inference + + + + + +kpms_model.Inference->kpms_model.Inference.GridMoviesSampledInstances + + + + +kpms_model.Inference.MotionSequence + + +kpms_model.Inference.MotionSequence + + + + + +kpms_model.Inference->kpms_model.Inference.MotionSequence + + + + +kpms_model.PreFittingTask + + +kpms_model.PreFittingTask + + + + + +kpms_model.PreFitting + + +kpms_model.PreFitting + + + + + +kpms_model.PreFittingTask->kpms_model.PreFitting + + + + +kpms_model.FullFittingTask + + +kpms_model.FullFittingTask + + + + + +kpms_model.FullFitting + + +kpms_model.FullFitting + + + + + +kpms_model.FullFittingTask->kpms_model.FullFitting + + + + +kpms_model.InferenceTask->kpms_model.Inference + + + + +subject.Subject + + +subject.Subject + + + + + +session.Session + + +session.Session + + + + + +subject.Subject->session.Session + + + + +session.Session->kpms_model.VideoRecording + + + + \ No newline at end of file diff --git a/images/pipeline_kpms_pca.svg b/images/pipeline_kpms_pca.svg new file mode 100644 index 0000000..4c8dbc0 --- /dev/null +++ b/images/pipeline_kpms_pca.svg @@ -0,0 +1,112 @@ + + + + + +kpms_pca.PCAFitting + + +kpms_pca.PCAFitting + + + + + +kpms_pca.LatentDimension + + +kpms_pca.LatentDimension + + + + + +kpms_pca.PCAFitting->kpms_pca.LatentDimension + + + + +kpms_pca.LoadKeypointSet + + +kpms_pca.LoadKeypointSet + + + + + +kpms_pca.LoadKeypointSet->kpms_pca.PCAFitting + + + + +kpms_pca.Bodyparts + + +kpms_pca.Bodyparts + + + + + +kpms_pca.PCATask + + +kpms_pca.PCATask + + + + + +kpms_pca.Bodyparts->kpms_pca.PCATask + + + + +kpms_pca.PCATask->kpms_pca.LoadKeypointSet + + + + +kpms_pca.KeypointSet + + +kpms_pca.KeypointSet + + + + + +kpms_pca.KeypointSet->kpms_pca.Bodyparts + + + + +kpms_pca.KeypointSet.VideoFile + + +kpms_pca.KeypointSet.VideoFile + + + + + +kpms_pca.KeypointSet->kpms_pca.KeypointSet.VideoFile + + + + +kpms_pca.PoseEstimationMethod + + +kpms_pca.PoseEstimationMethod + + + + + +kpms_pca.PoseEstimationMethod->kpms_pca.KeypointSet + + + + \ No newline at end of file From d7743cdcfb4181f2ae005b894f330d8acba39601 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 03:20:47 +0100 Subject: [PATCH 73/90] add `.github` --- .github/ISSUE_TEMPLATE/bug_report.md | 39 ++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 5 ++ .github/ISSUE_TEMPLATE/feature_request.md | 57 +++++++++++++++++++++++ .github/workflows/release.yaml | 27 +++++++++++ .github/workflows/test.yaml | 37 +++++++++++++++ 5 files changed, 165 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/test.yaml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..31fe9fc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: 'bug' +assignees: '' + +--- + +## Bug Report + +### Description + +A clear and concise description of what is the overall operation that is intended to be +performed that resulted in an error. + +### Reproducibility +Include: +- OS (WIN | MACOS | Linux) +- DataJoint Element Version +- MySQL Version +- MySQL Deployment Strategy (local-native | local-docker | remote) +- Minimum number of steps to reliably reproduce the issue +- Complete error stack as a result of evaluating the above steps + +### Expected Behavior +A clear and concise description of what you expected to happen. + +### Screenshots +If applicable, add screenshots to help explain your problem. + +### Additional Research and Context +Add any additional research or context that was conducted in creating this report. + +For example: +- Related GitHub issues and PR's either within this repository or in other relevant + repositories. +- Specific links to specific lines or a focus within source code. +- Relevant summary of Maintainers development meetings, milestones, projects, etc. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..b3d197d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: DataJoint Contribution Guideline + url: https://datajoint.com/docs/community/contribute/ + about: Please make sure to review the DataJoint Contribution Guidelines \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..1f2b784 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,57 @@ +--- +name: Feature request +about: Suggest an idea for a new feature +title: '' +labels: 'enhancement' +assignees: '' + +--- + +## Feature Request + +### Problem + +A clear and concise description how this idea has manifested and the context. Elaborate +on the need for this feature and/or what could be improved. Ex. I'm always frustrated +when [...] + +### Requirements + +A clear and concise description of the requirements to satisfy the new feature. Detail +what you expect from a successful implementation of the feature. Ex. When using this +feature, it should [...] + +### Justification + +Provide the key benefits in making this a supported feature. Ex. Adding support for this +feature would ensure [...] + +### Alternative Considerations + +Do you currently have a work-around for this? Provide any alternative solutions or +features you've considered. + +### Related Errors +Add any errors as a direct result of not exposing this feature. + +Please include steps to reproduce provided errors as follows: +- OS (WIN | MACOS | Linux) +- DataJoint Element Version +- MySQL Version +- MySQL Deployment Strategy (local-native | local-docker | remote) +- Minimum number of steps to reliably reproduce the issue +- Complete error stack as a result of evaluating the above steps + +### Screenshots +If applicable, add screenshots to help explain your feature. + +### Additional Research and Context +Add any additional research or context that was conducted in creating this feature request. + +For example: +- Related GitHub issues and PR's either within this repository or in other relevant + repositories. +- Specific links to specific lines or a focus within source code. +- Relevant summary of Maintainers development meetings, milestones, projects, etc. +- Any additional supplemental web references or links that would further justify this + feature request. diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..4a5f2cb --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,27 @@ +name: Release +on: + workflow_dispatch: +jobs: + make_github_release: + uses: datajoint/.github/.github/workflows/make_github_release.yaml@main + pypi_release: + needs: make_github_release + uses: datajoint/.github/.github/workflows/pypi_release.yaml@main + secrets: + TWINE_USERNAME: ${{secrets.TWINE_USERNAME}} + TWINE_PASSWORD: ${{secrets.TWINE_PASSWORD}} + with: + UPLOAD_URL: ${{needs.make_github_release.outputs.release_upload_url}} + mkdocs_release: + uses: datajoint/.github/.github/workflows/mkdocs_release.yaml@main + permissions: + contents: write + devcontainer-build: + uses: datajoint/.github/.github/workflows/devcontainer-build.yaml@main + devcontainer-publish: + needs: + - devcontainer-build + uses: datajoint/.github/.github/workflows/devcontainer-publish.yaml@main + secrets: + DOCKERHUB_USERNAME: ${{secrets.DOCKERHUB_USERNAME}} + DOCKERHUB_TOKEN: ${{secrets.DOCKERHUB_TOKEN_FOR_ELEMENTS}} \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..842b9db --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,37 @@ +name: Test +on: + push: + pull_request: + workflow_dispatch: + schedule: + - cron: "0 8 * * 1" +jobs: + devcontainer-build: + uses: datajoint/.github/.github/workflows/devcontainer-build.yaml@main + tests: + runs-on: ubuntu-latest + strategy: + matrix: + py_ver: ["3.9", "3.10"] + mysql_ver: ["8.0", "5.7"] + include: + - py_ver: "3.8" + mysql_ver: "5.7" + - py_ver: "3.7" + mysql_ver: "5.7" + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{matrix.py_ver}} + uses: actions/setup-python@v4 + with: + python-version: ${{matrix.py_ver}} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 "black[jupyter]" + - name: Run style tests + run: | + python_version=${{matrix.py_ver}} + black element_moseq --check --verbose --target-version py${python_version//.} + black notebooks --check --verbose --target-version py${python_version//.} + From 24673ec9155608a1dce1c0fe4875388e490a60c2 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 03:25:09 +0100 Subject: [PATCH 74/90] add files for the element --- .markdownlint.yaml | 17 ++++ .pre-commit-config.yaml | 59 +++++++++++ CODE_OF_CONDUCT.md | 132 +++++++++++++++++++++++++ CONTRIBUTING.md | 5 + LICENSE | 21 ++++ cspell.json | 210 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 444 insertions(+) create mode 100644 .markdownlint.yaml create mode 100644 .pre-commit-config.yaml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 cspell.json diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..0e9ceeb --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,17 @@ +# Markdown Linter configuration for docs +# https://github.com/DavidAnson/markdownlint +# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md +MD009: false # permit trailing spaces +MD007: false # List indenting - permit 4 spaces +MD013: + line_length: "88" # Line length limits + tables: false # disable for tables + headings: false # disable for headings +MD030: false # Number of spaces after a list +MD033: # HTML elements allowed + allowed_elements: + - "figure" + - "figcaption" +MD034: false # Permit bare URLs +MD031: false # Spacing w/code blocks. Conflicts with `??? Note` and code tab styling +MD046: false # Spacing w/code blocks. Conflicts with `??? Note` and code tab styling diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..e991fd6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,59 @@ +default_stages: [commit, push] +exclude: (^.github/|^docs/|^images/|^notebooks/|^tests/) +# Current tests/__init__ violates many flake8. Excluding pending change to conftest + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files # prevent giant files from being committed + - id: requirements-txt-fixer + - id: mixed-line-ending + args: ["--fix=lf"] + description: Forces to replace line ending by the UNIX 'lf' character. + + # black + - repo: https://github.com/psf/black + rev: 22.12.0 + hooks: + - id: black + - id: black-jupyter + args: + - --line-length=88 + + # isort + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + args: ["--profile", "black"] + description: Sorts imports in an alphabetical order + + # flake8 + - repo: https://github.com/pycqa/flake8 + rev: 4.0.1 + hooks: + - id: flake8 + args: # arguments to configure flake8 + # making isort line length compatible with black + - "--max-line-length=88" + - "--max-complexity=18" + - "--select=B,C,E,F,W,T4,B9" + + # these are errors that will be ignored by flake8 + # https://www.flake8rules.com/rules/{code}.html + - "--ignore=E203,E501,W503,W605,E402" + # E203 - Colons should not have any space before them. + # Needed for list indexing + # E501 - Line lengths are recommended to be no greater than 79 characters. + # Needed as we conform to 88 + # W503 - Line breaks should occur after the binary operator. + # Needed because not compatible with black + # W605 - a backslash-character pair that is not a valid escape sequence now + # generates a DeprecationWarning. This will eventually become a SyntaxError. + # Needed because we use \d as an escape sequence + # E402 - Place module level import at the top. + # Needed to prevent circular import error diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..0502528 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,132 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[Support@DataJoint.com](mailto:support@datajoint.com). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2bd0f49 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +# Contribution Guidelines + +This project follows the +[DataJoint Contribution Guidelines](https://datajoint.com/docs/about/contribute/). +Please reference the link for more full details. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6872305 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 DataJoint + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..325eacf --- /dev/null +++ b/cspell.json @@ -0,0 +1,210 @@ +// cSpell Settings +//https://github.com/streetsidesoftware/vscode-spell-checker +{ + "version": "0.2", // Version of the setting file. Always 0.2 + "language": "en", // language - current active spelling language + "enabledLanguageIds": [ + "markdown", + "yaml", + "python" + ], + // flagWords - list of words to be always considered incorrect + // This is useful for offensive words and common spelling errors. + // For example "hte" should be "the" + "flagWords": [], + "allowCompoundWords": true, + "ignorePaths": [ + "./element_moseq.egg-info/*", + "./images/*" + ], + "words": [ + "acorr", + "aggr", + "Alessio", + "Andreas", + "apmeta", + "arange", + "arithmatex", + "asarray", + "astype", + "autocorrelogram", + "Axona", + "bbins", + "bdist", + "Binarize", + "bouton", + "Brody", + "Bruker", + "bshift", + "Buccino", + "catgt", + "cbar", + "cbin", + "cdat", + "chans", + "Chans", + "chns", + "Clust", + "clusterings", + "cmap", + "cnmf", + "correlogram", + "correlograms", + "curations", + "DANDI", + "decomp", + "deconvolution", + "DISTRO", + "djbase", + "dtype", + "ecephys", + "Eftychios", + "electrophysiogical", + "elif", + "Ephys", + "fluo", + "fneu", + "Fneu", + "gblcar", + "gfix", + "Giovannucci", + "Hakan", + "hdmf", + "HHMI", + "hstack", + "ibllib", + "ifnull", + "imax", + "Imax", + "IMAX", + "imec", + "imread", + "imro", + "imrotbl", + "imshow", + "Inan", + "inlinehilite", + "iplane", + "ipynb", + "ipywidgets", + "iscell", + "Kavli", + "kcoords", + "Klusta", + "Kwik", + "lfmeta", + "linenums", + "masky", + "mathjax", + "mdict", + "Mesoscale", + "mesoscope", + "mkdocs", + "mkdocstrings", + "Moser", + "mtscomp", + "nblocks", + "nchan", + "Nchan", + "nchannels", + "ndarray", + "ndepths", + "ndim", + "ndimage", + "Neuralynx", + "NEURO", + "neuroconv", + "Neurodata", + "Neurolabware", + "neuropil", + "Neuropil", + "Neuropix", + "neuropixel", + "NeuroPixels", + "nfields", + "nframes", + "npix", + "nplanes", + "nrois", + "NTNU", + "nwbfile", + "NWBHDF", + "oebin", + "openephys", + "openpyxl", + "Pachitariu", + "paramsets", + "phylog", + "plotly", + "Pnevmatikakis", + "PSTH", + "pykilosort", + "pymdownx", + "pynwb", + "pyopenephys", + "pyplot", + "pytest", + "quantile", + "Reimer", + "repolarization", + "Roboto", + "roidetect", + "rois", + "ROIs", + "RRID", + "Rxiv", + "Sasaki", + "sbxreader", + "scipy", + "sdist", + "sess", + "SGLX", + "Shen", + "Siegle", + "Sitonic", + "spikeglx", + "spkcount", + "spks", + "Stereotaxic", + "Sutter", + "tcat", + "tickvals", + "tofile", + "Tolias", + "tqdm", + "usecs", + "usedb", + "Vidrio's", + "vline", + "vmax", + "Vmax", + "voxel", + "xanchor", + "xaxes", + "xaxis", + "xblock", + "xcoords", + "xcorr", + "xlabel", + "xlim", + "xoff", + "xpix", + "XPOS", + "xtick", + "yanchor", + "Yatsenko", + "yaxes", + "yaxis", + "yblock", + "ycoord", + "ycoords", + "ylabel", + "ylim", + "yoff", + "ypix", + "YPOS", + "yref", + "yticks", + "zpix" + ] +} \ No newline at end of file From d57b52f10830a8f5c35d2166248b457da5201491 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 03:26:29 +0100 Subject: [PATCH 75/90] black formatting README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 92415cc..53ecddf 100644 --- a/README.md +++ b/README.md @@ -77,4 +77,3 @@ MYSQL_VER=8.0 docker compose -f docker-compose-db.yaml up --build -d 1. We recommend you start by navigating to the `notebooks` directory on the left panel and go through the `tutorial.ipynb` Jupyter notebook. Execute the cells in the notebook to begin your walkthrough of the tutorial. 1. Once you are done, see the options available to you in the menu in the bottom-left corner. For example, in Codespace you will have an option to `Stop Current Codespace` but when running Dev Container on your own machine the equivalent option is `Reopen folder locally`. By default, GitHub will also automatically stop the Codespace after 30 minutes of inactivity. Once the Codespace is no longer being used, we recommend deleting the Codespace. - From 3360062e212cfd40e360462073d3c683de3255cc Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 03:28:18 +0100 Subject: [PATCH 76/90] add CHANGELOG --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f98f9d6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +# Changelog + +Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and +[Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention. + +## [0.1.0] - 2024-03-20 + ++ Add - `docs` ++ Add - `kpms_reader` reader ++ Add - `element_moseq` containing `kpms_pca` and `kpms_model` modules ++ Add - `flowchart` and `pipeline` images ++ Add - `tutorial.ipynb` consistent with the DataJoint Elements ++ Add - `tutorial_pipeline.py` script for notebooks to import and activate schemas ++ Add - spelling, markdown, and pre-commit config files ++ Add - GitHub Actions that call reusable workflows in the `datajoint/.github` repository ++ Add - `LICENSE`, `CONTRIBUTING`, `CODE_OF_CONDUCT`, `CHANGELOG` ++ Add - `README` consistent with the DataJoint Elements ++ Add - `setup.py` with `extras_require` feature From 90a65ac9e92476af118add89318d6525a7545f50 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Wed, 20 Mar 2024 06:40:51 +0100 Subject: [PATCH 77/90] update `tutorial.ipynb` --- notebooks/tutorial.ipynb | 3709 +++++++++++++++++++++++--------------- 1 file changed, 2303 insertions(+), 1406 deletions(-) diff --git a/notebooks/tutorial.ipynb b/notebooks/tutorial.ipynb index b18db59..6193d6f 100644 --- a/notebooks/tutorial.ipynb +++ b/notebooks/tutorial.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# DataJoint Element for Motion Sequencing with Keypoint MoSeq\n" + "# DataJoint Element for Motion Sequencing with Keypoint-MoSeq\n" ] }, { @@ -32,7 +32,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The package is designed to seamlessly integrate the **PCA fitting**, **model fitting** through **initialization**, **fitting an AR-HMM**, and **fitting the full model** into a data pipeline and streamline model and video management using DataJoint.\n" + "The package is designed to seamlessly integrate the **PCA fitting**, **model fitting** through **initialization**, **fitting an AR-HMM**, and **fitting the full keypoint-SLDS model** into a data pipeline and streamline model and video management using DataJoint.\n" ] }, { @@ -76,10 +76,10 @@ "- Setup\n", "- _Activate_ the DataJoint pipeline\n", "- _Insert_ example data into subject and session tables\n", - "- _Insert_ the keypoint data from pose estimation and the body parts in the DataJoint pipeline\n", + "- _Insert_ the keypoint data from the pose estimation and the body parts in the DataJoint pipeline\n", "- _Fit a PCA model_ to aligned and centered keypoint coordinates and _select_ the latent dimension\n", - "- _Fit the AR-HMM and the full model_\n", - "- _Generate and store_ the model results and visualizations\n" + "- _Fit the AR-HMM and Keypoint-SLDS Models_\n", + "- _Run the inference_ task and _visualize_ the results\n" ] }, { @@ -93,11 +93,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This tutorial loads the keypoint data extracted by DeepLabCut of a single freely moving mouse in an open-field environment. The goal is to link this point tracking to pose dynamics by identifying its behavioral modules (\"syllables\") without human supervision. The modeling results are stored as a `.h5` file (and optionally a directory of `.csv` files) that contain the following information:\n", + "This tutorial loads the keypoint data extracted by DeepLabCut of a single freely moving mouse in an open-field environment. The goal is to link this point tracking to pose dynamics by identifying its behavioral modules (\"syllables\") without human supervision. The modeling results are stored as a `.h5` file and a subdirectory of `.csv` files that contain the following information:\n", "\n", "- Behavior modules as \"syllables\": the syllable label assigned to each frame (i.e. the state indexes assigned by the model)\n", "- Centroid and heading in each frame, as estimated by the model, that capture the animal's overall position in allocentric coordinates\n", - "- Latent state: low-dimensional representation of the animal's pose in each frame. These are similar to PCA scores, are modified to reflect the pose dynamics and noise estimates inferred by the model.\n", + "- Latent state: low-dimensional representation of the animal's pose in each frame. These are similar to PCA scores, and are modified to reflect the pose dynamics and noise estimates inferred by the model.\n", "\n", "The results of this Element example can be combined with **other modalities** to create a complete customizable data pipeline for your specific lab or study. For instance, you can combine `element-moseq` with `element-deeplabcut` and `element-calcium-imaging` to characterize the neural activity along with natural sub-second rhythmicity in mouse movement.\n", "\n", @@ -105,9 +105,10 @@ "\n", "The input data for this data pipeline is as follows:\n", "\n", - "- A DeepLabCut (DLC) project folder with its config file, video set and keypoint data.\n", - "- Selection of the anterior, posterior, and use bodyparts.\n", - " This tutorial includes this DLC project folder with example data and the results as well in `example_data` directory.\n" + "- A DeepLabCut (DLC) project folder with its configuration file as `.yaml` file, video set as `.mp4`, and keypoint tracking as `.h5` files.\n", + "- Selection of the anterior, posterior, and use bodyparts for the model fitting.\n", + "\n", + "This tutorial includes the keypoints example data in `example_data/inbox/dlc_project`.\n" ] }, { @@ -137,7 +138,10 @@ "source": [ "import datajoint as dj\n", "from pathlib import Path\n", - "import numpy as np" + "import numpy as np\n", + "\n", + "from element_moseq.kpms_pca import get_kpms_root_data_dir, get_kpms_processed_data_dir \n", + "from element_interface.utils import find_full_path" ] }, { @@ -158,8 +162,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[2024-03-13 17:32:11,291][INFO]: Connecting root@localhost:3306\n", - "[2024-03-13 17:32:11,319][INFO]: Connected root@localhost:3306\n" + "[2024-03-20 05:59:24,965][INFO]: Connecting root@localhost:3306\n", + "[2024-03-20 05:59:25,009][INFO]: Connected root@localhost:3306\n" ] }, { @@ -195,14 +199,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "[2024-03-13 17:32:11,328][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" + "[2024-03-20 05:59:41,609][WARNING]: lab.Project and related tables will be removed in a future version of Element Lab. Please use the project schema.\n" ] }, { @@ -249,12 +253,12 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", - "
\n", + "
\n", + "
\n", "
\n", "